【发布时间】:2011-01-15 00:45:55
【问题描述】:
我正在使用 JNA 访问 openCV,在我的应用程序中,我有一个函数可以将 RGB 值数组返回给 java 以进行显示,如果图像实际上使用 rgb 颜色空间但如果图像是 hsv 或二进制则很好图像它会产生奇怪的行为伪影我如何检测它正在使用的颜色空间并在传输之前将所有内容转换为 rgb,如果它们不是,则将它们转换为 rgb?
【问题讨论】:
标签: opencv
我正在使用 JNA 访问 openCV,在我的应用程序中,我有一个函数可以将 RGB 值数组返回给 java 以进行显示,如果图像实际上使用 rgb 颜色空间但如果图像是 hsv 或二进制则很好图像它会产生奇怪的行为伪影我如何检测它正在使用的颜色空间并在传输之前将所有内容转换为 rgb,如果它们不是,则将它们转换为 rgb?
【问题讨论】:
标签: opencv
您无法通过直接检查三个缓冲区来检测图像是否为 rgb。在将其提供给其他进程或应用程序之前,您需要知道它的格式。 我建议您决定将 rgb 用于所有进程间缓冲区,并确保所有图像在每个原始进程中都转换为 rgb。
在 Opencv 中使用“CvtColor”将原生 bgr 转换为 rgb。从其他应用程序 - 如果它们不支持图像转换 - 如果需要,您可以使用 cvconvert 将它们全部转换为 rgb。
您还可以使用“Merge”和“Mixchannels”来制作简单的 rgb 到 bgr,无需任何大惊小怪和就地。
在 2.2 中有一个更好的 rgb to hsv 函数,它使用所有 256 个值作为色调。它比旧的更好。
【讨论】: