色彩空间属于哪一个?

时间:2013-07-01 15:28:50

标签: c++ visual-studio-2010 opencv colors

我正在使用具有特定色彩空间的彩色相机。我们是否应该考虑,当我从中获取图像时,将它们保存在imageData中,使用openCV访问它们的像素,并声明它们(如下所示):由于OpenCV属于该颜色空间,RGB颜色空间将是sRGB?

 IplImage *A1=cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);
 IplImage *A2=cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);
 IplImage *A3=cvCreateImage(cvSize(640, 480), IPL_DEPTH_8U, 3);

1 个答案:

答案 0 :(得分:0)

OpenCV中的默认颜色格式通常称为RGB,但它实际上是BGR。因此,当您加载图像时,默认情况下它会以BGR格式读取,即使它不是。

如果您知道相机的色彩空间,请使用cvtColor,如下所示。如果不这样做,请尝试使用cvtColor函数并找到最佳图像;因为没有可以检测默认相机色彩空间的算法。

// suppose camera outputs RGB
Mat img = imread("..."); // loaded as BGR
cvtColor(img, img, CV_RGB2BGR); // corrected now.

请仔细阅读explanation