OpenCV2.3 imwrite 保存黑色图像

Posted

技术标签:

【中文标题】OpenCV2.3 imwrite 保存黑色图像【英文标题】:OpenCV2.3 imwrite saves black image 【发布时间】:2011-09-18 19:05:42 【问题描述】:

我正在尝试使用 imwrite 将 JPEG 图像保存到磁盘上,似乎我遗漏了一些东西。我总是得到大约 4KB 的黑色图像。我在这里做错了什么? 我看到的图像看起来不错,但是一旦放到磁盘上,它就完全变黑了。

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

【问题讨论】:

【参考方案1】:

以下代码适用于 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>

【讨论】:

接受了,因为我错过了质量因素【参考方案2】:

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

image.convertTo(image, CV_8UC3, 255.0);

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于OpenCV2.3 imwrite 保存黑色图像的主要内容,如果未能解决你的问题,请参考以下文章

matlab 关于保存图像的问题

opencv保存图像

图片透明处理的方法

matlab 保存的图像总有白边 怎么回事

OpenCV 函数学习02-图像的保存(cv2.imwrite)

Matlab imwrite函数 保存图像会压缩