我正在使用具有特定色彩空间的彩色相机。我们是否应该考虑,当我从中获取图像时,将它们保存在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);
答案 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。