OpenCV2.3 imwrite保存黑色图像

时间:2011-09-18 19:05:42

标签: image opencv save

我正在尝试使用imwrite将JPEG图像保存到磁盘上,似乎我错过了一些东西。我总是得到大约4KB的黑色图像。我在这做错了什么? 我看到的图像似乎很好,但一旦进入磁盘,它就完全是黑色的。

std::vector<int> qualityType(1);
qualityType.push_back(CV_IMWRITE_JPEG_QUALITY);
cv::imwrite("Final.jpg",image,qualityType);

enter image description here

3 个答案:

答案 0 :(得分:3)

以下代码适用于8位(1和3通道)图像:

std::vector<int> qualityType;
qualityType.push_back(CV_IMWRITE_JPEG_QUALITY);
qualityType.push_back(90);
cv::imwrite("Final.jpg",image,qualityType);

在您的代码中qualityType初始化不正确。您的向量包含2个值

{<some unknown number>, CV_IMWRITE_JPEG_QUALITY}

但应该是

{CV_IMWRITE_JPEG_QUALITY, <desired quality value>}

答案 1 :(得分:2)

imwrite以0到255比例打印,但您的图像是0到1比例。要向上扩展,请使用以下行:

image.convertTo(image,CV_8UC3,255.0);

答案 2 :(得分:0)

我只需将其转换为16位图像

image.convertTo(image,CV_16UC3,255,255);

根据文档,可以保存8位或16位图像。