Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenCV中打开并保存图像使图像更大(ruby OpenCV)_Ruby_Opencv - Fatal编程技术网

在OpenCV中打开并保存图像使图像更大(ruby OpenCV)

在OpenCV中打开并保存图像使图像更大(ruby OpenCV),ruby,opencv,Ruby,Opencv,我在ruby中使用OpenCV和ruby OpenCV(尽管我怀疑这不会有什么不同),作为一个简单的测试,我打开一个图像并用不同的文件名保存它 require 'opencv' include OpenCV image = CvMat.load("samples/CIMG0388.JPG") image.save("samples/CIMG0388_2.JPG") 结果是,虽然尺寸相同,但保存的图像要大得多(318.3 Kb vs 187.0 Kb)。为什么会这样?OpenCV是否向生成的

我在ruby中使用OpenCV和ruby OpenCV(尽管我怀疑这不会有什么不同),作为一个简单的测试,我打开一个图像并用不同的文件名保存它

require 'opencv'

include OpenCV

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

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

以下是答案:


这可能是因为
CV\u IMWRITE\u JPEG\u QUALITY
设置为95。您可能需要尝试cv::imwrite,并将质量设置为您想要的。有关更多详细信息,请参阅

@mydoghasworms补充阅读:

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

require 'opencv'

include OpenCV

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

以下是答案:


这可能是因为
CV\u IMWRITE\u JPEG\u QUALITY
设置为95。您可能需要尝试cv::imwrite,并将质量设置为您想要的。有关更多详细信息,请参阅

@mydoghasworms补充阅读:

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

require 'opencv'

include OpenCV

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

这可能是因为
CV\u IMWRITE\u JPEG\u QUALITY
设置为95。您可能需要尝试
cv::imwrite
,并将质量设置为您想要的。有关更多详细信息,您可以参考Thanks,但在Ruby中,OpenCV::CV_IMWRITE_JPEG_QUALITY的值设置为1,除非这是某个枚举值。是吗?那么我猜是0比1的比例;也许您可以尝试将其设置为0.95或其他什么?它可能是一个反向计算器(1表示不压缩,较高的数字会降低质量),而且opencv是否支持控制它还不是100%清楚。2009年的这个问题表明它在当时是不受支持的:啊,原来它只是一把钥匙。这个问题帮助我找到了答案:。通过将
{CV\u IMWRITE\u JPEG\u QUALITY=>20}
作为第二个参数传递给Ruby方法,它考虑了质量值。感谢您的帮助。这可能是因为
CV\u IMWRITE\u JPEG\u QUALITY
设置为95。您可能需要尝试
cv::imwrite
,并将质量设置为您想要的。有关更多详细信息,您可以参考Thanks,但在Ruby中,OpenCV::CV_IMWRITE_JPEG_QUALITY的值设置为1,除非这是某个枚举值。是吗?那么我猜是0比1的比例;也许您可以尝试将其设置为0.95或其他什么?它可能是一个反向计算器(1表示不压缩,较高的数字会降低质量),而且opencv是否支持控制它还不是100%清楚。2009年的这个问题表明它在当时是不受支持的:啊,原来它只是一把钥匙。这个问题帮助我找到了答案:。通过将
{CV\u IMWRITE\u JPEG\u QUALITY=>20}
作为第二个参数传递给Ruby方法,它考虑了质量值。谢谢你的帮助。