我正在使用JNA访问openCV,在我的应用程序中我有一个函数返回一个RGB值数组到java进行显示,如果图像实际上使用rgb颜色空间但是如果图像是hsv或二进制文件则很好图像它产生奇怪的行为神器如何我可以检测它正在使用什么颜色空间并在传输之前将所有颜色空间转换为rgb并将它们转换为rgb如果它们不是?
答案 0 :(得分:1)
通过直接检查三个缓冲区,无法检测图像是否为rgb。在将其提供给其他进程或应用程序之前,您需要知道它的格式。 我建议您决定将rgb用于所有进程间缓冲区,并确保在每个原始进程中将所有映像转换为rgb。
在Opencv中使用“CvtColor”将原生bgr转换为rgb。从其他应用程序 - 如果他们不支持图像转换 - 那么你可以使用cvconvert将它们全部转换为rgb,如果你需要的话。你也可以使用“Merge”和“Mixchannels”来制作简单的rgb到bgr,而不会有任何麻烦和就地。
在2.2中,有一个更好的rgb到hsv fuinction,它使用了所有256个hue值。它比旧的更好。