2011-01-14 113 views
1

我正在使用JNA来访问openCV,在我的应用程序中我有一个函数,返回一个RGB值的数组,以显示这是很好,如果图像实际上使用rgb色彩空间,但如果该图像是hsv或二进制图像它产生奇怪的行为artifacts我怎么可以检测到它使用的是什么颜色空间,并在转换前将所有内容转换为rgb并将它们转换为rgb,如果它们不是?转换所有图像为RGB传输

回答

1

通过直接检查三个缓冲区,您无法检测到图像是否为rgb。在将其提供给其他进程或应用程序之前,您需要知道它的格式。 我建议你决定使用rgb处理所有进程间缓冲区,并确保在每个始发进程中将所有图像转换为rgb。

在Opencv中使用“CvtColor”将原生bgr转换为rgb。从其他应用程序 - 如果他们不支持图像转换 - 那么你可以使用cvconvert将它们全部转换为rgb,如果你需要的话。

您还可以使用“合并”和“Mixchannels”来简单地将rgb转换为bgr,而无需大惊小怪和就地操作。

在2.2中有一个更好的rgb到hsv的功能,它使用所有256个色调值。它比旧的好。

文档浏览:http://opencv.willowgarage.com/wiki/

+0

以及我的问题是图像开始为RGB,但用户操作把它们转化成HSV二进制等等,所以我不能跟踪它的ATM,是不是有某种标志,以告诉methis是hsv这是二进制 – 2011-01-14 17:21:37

相关问题