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 保存黑色图像的主要内容,如果未能解决你的问题,请参考以下文章