我该如何使用openCV来查看图像的颜色空间?
在使用cvCvtColor()函数转换之前,我想确认它是否为RGB。
谢谢
不幸的是,OpenCV 在 IplImage 结构中没有提供任何关于颜色空间的指示,因此如果您从某个地方盲目地取出 IplImage,就无法知道它是如何编码的。此外,没有算法可以确定地告诉您应该将图像解释为 HSV 还是 RGB - 对于机器来说,它们只是一堆字节 (这张图片是 HSV 还是 RGB?点击这里)。我建议将您的 IplImages 包装在另一个结构体中(甚至是一个带有模板的 C++ 类!),以帮助您跟踪此信息。如果您非常急切,并且只处理某种类型的图像(户外场景、办公室、面部等等),则可以尝试对图像进行一些统计分析(例如为自然 RGB 图像和一些自然 HSV 图像构建直方图统计信息),然后尝试通过比较您的完全未知的图像更接近哪个颜色空间来对其进行分类。
txandi提出了一个有趣的观点。OpenCV默认使用BGR颜色空间。这类似于RGB颜色空间,只是图像中的B和R通道在物理上被交换了。如果物理通道顺序对您很重要,您需要使用此函数转换图像:cvCvtColor(defaultBGR, imageRGB, CV_BGR2RGB)。
cvCvtColor(src,dst,CV_BGR2RGB)
。如果您正在使用OpenCV查看器或将图像保存到文件中,则应确保它们处于BGR颜色空间。IplImage结构体有一个由4个字符组成的字段,名为colorModel
。不幸的是,OpenCV忽略了这个字段。但您可以使用此字段来跟踪不同的颜色模型。
https://dryrungarage.wordpress.com/2018/03/11/image-processing-basics/
IplImage
结构 -- 你是如何将图像导入 OpenCV 的? - ezod