opencv cvSaveImage() 将RGB jpg图像保存为BGR格式
opencv cvSaveImage() saves RGB jpg image in BGR format
我正在将我的 bgr 图像转换为 rgb 图像,然后将其保存到磁盘,但保存的图像不是 rgb 格式。
IplImage* opencvImage_temp = cvCloneImage(inputImg);
cvCvtColor(inputImg,opencvImage_temp, CV_BGR2RGB );
opencvImage=cvCreateImage ( cvSize(480,320), opencvImage_temp->depth, opencvImage_temp->nChannels );
cvResize(opencvImage_temp, opencvImage);
cvSaveImage("stream.jpg",opencvImage_temp);
如果你们中的任何人以前遇到过这个问题,请帮助我。
你想多了。让 OpenCV 为您处理转换。试试这个实验(在 C++ 中!):
Mat blueImage(200,300, CV_8UC3, Scalar(255,0,0));
imshow("Blue Image", blueImage);
imwrite("blueOut.jpg", blueImage);
Mat blueSaved = imread("blueOut.jpg");
imshow("Saved Blue Image", blueSaved);
Mat redImage;
cvtColor(blueImage, redImage, CV_BGR2RGB);
imshow("Red Image", redImage);
imwrite("redOut.jpg", redImage);
Mat redSaved = imread("redOut.jpg");
imshow("Saved Red Image", redSaved);
如果您看第一行,我们显然正在创建 BGR 格式的全蓝图像。 window "Blue Image" 证实了这一点。
当我们将 BGR 图像保存为 jpeg 时,OpenCV 在保存之前自动将该 BGR 图像转换为 RGB。您可以通过转到包含可执行文件的目录并使用任何图像查看软件打开 "blueOut.jpg" 来确认这一点。
现在,如果您查看 redImage
的创建,我所做的就是将 BGR 图像转换为 RGB 并进行查看。惊了,红了!即使我们保存它,OpenCV 也会尽职尽责地颠倒通道的顺序,保存的图像 "redOut.jpg" 是红色的。
所有这一切的最终结果是,让 OpenCV 为您工作。您不必进行转换即可输出 RGB 图像。哦,还有用C++API。
我正在将我的 bgr 图像转换为 rgb 图像,然后将其保存到磁盘,但保存的图像不是 rgb 格式。
IplImage* opencvImage_temp = cvCloneImage(inputImg);
cvCvtColor(inputImg,opencvImage_temp, CV_BGR2RGB );
opencvImage=cvCreateImage ( cvSize(480,320), opencvImage_temp->depth, opencvImage_temp->nChannels );
cvResize(opencvImage_temp, opencvImage);
cvSaveImage("stream.jpg",opencvImage_temp);
如果你们中的任何人以前遇到过这个问题,请帮助我。
你想多了。让 OpenCV 为您处理转换。试试这个实验(在 C++ 中!):
Mat blueImage(200,300, CV_8UC3, Scalar(255,0,0));
imshow("Blue Image", blueImage);
imwrite("blueOut.jpg", blueImage);
Mat blueSaved = imread("blueOut.jpg");
imshow("Saved Blue Image", blueSaved);
Mat redImage;
cvtColor(blueImage, redImage, CV_BGR2RGB);
imshow("Red Image", redImage);
imwrite("redOut.jpg", redImage);
Mat redSaved = imread("redOut.jpg");
imshow("Saved Red Image", redSaved);
如果您看第一行,我们显然正在创建 BGR 格式的全蓝图像。 window "Blue Image" 证实了这一点。
当我们将 BGR 图像保存为 jpeg 时,OpenCV 在保存之前自动将该 BGR 图像转换为 RGB。您可以通过转到包含可执行文件的目录并使用任何图像查看软件打开 "blueOut.jpg" 来确认这一点。
现在,如果您查看 redImage
的创建,我所做的就是将 BGR 图像转换为 RGB 并进行查看。惊了,红了!即使我们保存它,OpenCV 也会尽职尽责地颠倒通道的顺序,保存的图像 "redOut.jpg" 是红色的。
所有这一切的最终结果是,让 OpenCV 为您工作。您不必进行转换即可输出 RGB 图像。哦,还有用C++API。