zin*_*rod 7 opencv image image-processing opencv3.0
我正在使用OpenCV 3.0,每当我读取图像并将其写回时,结果都是褪色的图像.
码:
cv::Mat img = cv::imread("dir/frogImage.jpg",-1);
cv::imwrite("dir/result.jpg",img);
Run Code Online (Sandbox Code Playgroud)
有谁知道造成这种情况的原因是什么?
您可以尝试增加压缩质量参数,如cv::imwrite 的 OpenCV 文档中所示:
cv::Mat img = cv::imread("dir/frogImage.jpg",-1);
std::vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);
cv::imwrite("dir/result.jpg",img, compression_params);
Run Code Online (Sandbox Code Playgroud)
如果不手动指定压缩质量,将应用 95% 的质量。
但是 1. 你不知道原始图像的 jpeg 压缩质量如何(所以也许你可能会增加图像大小),2. 它(据我所知)仍然会引入额外的小瑕疵,因为毕竟它是一种有损压缩方法。
更新您的问题似乎不是因为压缩伪影,而是因为具有Adobe RGB 1998颜色格式的图像。OpenCV 按原样解释颜色值,但它应该缩放颜色值以适合“真实”RGB 颜色空间。浏览器和某些图像查看器确实正确应用了颜色格式,而其他浏览器则不然(例如 irfanView)。我用GIMP来验证。使用 GIMP,您可以在启动时决定如何按格式解释颜色值,要么获得您想要的图像,要么获得“褪色”的图像。OpenCV绝对不关心这些事情,因为它不是一个照片编辑库,所以无论是在读取还是在写入时,颜色格式都不会被处理。