问题在于当我需要将它转换为HSV格式时,CV_BGR2HSV和CV_RGB2HSV会给出不同的结果:
因此,我真的需要知道用
imread
打开图像时颜色的顺序是什么,或者如何强制imread
以任意特定的顺序打开图像。px_idx
的任何给定颜色像素按顺序有3个元素,其中[px_idx + 0]
:蓝色通道,[px_idx + 1]
:绿色通道,[px_idx + 2]
:红色通道。
注意,在彩色图像的情况下,解码后的图像将按BGR顺序存储通道。
通过传递给imread
的标志参数,您可以对颜色类型进行一些(有限)控制,尽管您无法指定通道排序(您应该假设所有彩色图像都是BGR)。
imshow()
来显示图像?imshow()
并不知道颜色空间,即使你将其转换为另一种格式,它也会打印BGR格式的图像。这就是为什么你会得到奇怪的结果。imshow()
打印它,然后再将其从BGR格式转换为RGB格式:cv::cvtColor(src, dst, CV_RGB2BGR);
imshow("RGB2BGR", dst);
cv::cvtColor(src, dst, CV_BGR2RGB);
imshow("BGR2RGB", dst);
那么,您的例子证明的是将BGR图像转换为HSV不会导致与将RGB图像转换为HSV得到相同的矩阵。