在 OpenCV 中打开和保存图像会使图像变大(ruby-opencv)

Posted

技术标签:

【中文标题】在 OpenCV 中打开和保存图像会使图像变大(ruby-opencv)【英文标题】:Open and save image in OpenCV makes image a lot larger (ruby-opencv) 【发布时间】:2013-12-03 10:44:10 【问题描述】:

我在 ruby​​ 中使用 OpenCV 和 ruby​​-opencv(虽然我怀疑这不会产生影响),作为一个简单的测试,我打开一个图像并用不同的文件名保存它。

require 'opencv'

include OpenCV

image = CvMat.load("samples/CIMG0388.JPG")
image.save("samples/CIMG0388_2.JPG")

虽然尺寸相同,但保存的图像要大得多(318.3 Kb 与 187.0 Kb)。为什么是这样? OpenCV 是否向生成的图像添加信息?还是一些默认的质量设置?

【问题讨论】:

这可能是因为CV_IMWRITE_JPEG_QUALITY 设置为95。您可能想尝试cv::imwrite 并将质量设置为您想要的。更多详情可以参考docs.opencv.org/modules/highgui/doc/… 谢谢,但是 OpenCV::CV_IMWRITE_JPEG_QUALITY 的值在 Ruby 中设置为 1,除非这是某个枚举值。是吗? 那么我猜它是 0 到 1 的比例;也许您可以尝试将其设置为 0.95 之类的......? 它可能是一个倒置的calse(1表示不压缩,数字越大质量越差),opencv是否支持控制也不是100%清楚。 2009 年的这个问题表明当时不支持它:***.com/questions/801054/… 啊,原来它只是一把钥匙。这个 SO 问题帮助我找到了答案:***.com/questions/801054/…。通过将CV_IMWRITE_JPEG_QUALITY => 20 作为第二个参数传递给Ruby 方法,它考虑了质量值。感谢您的帮助。 【参考方案1】:

这是一个答案:

这可能是因为 CV_IMWRITE_JPEG_QUALITY 设置为 95。您可能想尝试 cv::imwrite 并将质量设置为您想要的。更多详情可以参考cv::imwrite documentation..

@mydoghasworms 添加的补充阅读:OpenCV cvSaveImage Jpeg Compression Factor

Ruby 中将 JPEG 质量设置为 20 的示例解决方案:

require 'opencv'

include OpenCV

image = CvMat.load("samples/CIMG0388.JPG")
image.save("samples/CIMG0388_2.JPG", CV_IMWRITE_JPEG_QUALITY => 20)

【讨论】:

以上是关于在 OpenCV 中打开和保存图像会使图像变大(ruby-opencv)的主要内容,如果未能解决你的问题,请参考以下文章

如何在opencv和python中使眼睛和鼻子变大或变小

怎么设置图片的KB变大

图像未在 python OpenCV 中打开 [重复]

如何opencv读取摄像头并保存每一帧图像?

如何opencv读取摄像头并保存每一帧图像

[opencv] 图像保存格式的小问题