我正在尝试使用imwrite将JPEG图像保存到磁盘上,似乎我错过了一些东西。我总是得到大约4KB的黑色图像。我在这做错了什么? 我看到的图像似乎很好,但一旦进入磁盘,它就完全是黑色的。
std::vector<int> qualityType(1);
qualityType.push_back(CV_IMWRITE_JPEG_QUALITY);
cv::imwrite("Final.jpg",image,qualityType);
答案 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位图像。