0

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

 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);
4

1 回答 1

0

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

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

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

请通读此说明

于 2013-07-01T17:55:34.953 回答