Opencv 读取并保存图像会增加图像大小
我使用CV2.imread加载了一个图像,并使用CV2.imwrite()和scipy.misc.imsave()保存了它。在这两种情况下,输出图像大小都会受到影响。为什么会这样 输入和输出图像都是.jpg文件类型Opencv 读取并保存图像会增加图像大小,opencv,image-processing,scipy,imread,Opencv,Image Processing,Scipy,Imread,我使用CV2.imread加载了一个图像,并使用CV2.imwrite()和scipy.misc.imsave()保存了它。在这两种情况下,输出图像大小都会受到影响。为什么会这样 输入和输出图像都是.jpg文件类型 img = cv2.imread(img_src) scipy.misc.imsave(img, "scipy_original.jpg") cv2.imwrite("cv2_original.jpg", img) 输入文件大小为309kb cv2中的输出文件大小为690kb 以s
img = cv2.imread(img_src)
scipy.misc.imsave(img, "scipy_original.jpg")
cv2.imwrite("cv2_original.jpg", img)
输入文件大小为309kb
cv2中的输出文件大小为690kb
以scipy为单位的输出文件大小为399kb
这是您想要参考的图像:OpenCV对jpg有不同的压缩级别,从0到100。默认值为95 问题讨论了它,网站上有例子 使用如下参数保存:
cv2.imwrite(“cv2\u original.jpg”、img、[int(cv2.imwrite\u JPEG\u QUALITY)、jpg\u QUALITY])
其中jpg\u QUALITY<95
将减小文件大小。OpenCV对jpg有不同的压缩级别,从0到100。默认值为95
问题讨论了它,网站上有例子
使用如下参数保存:
cv2.imwrite(“cv2_original.jpg”,img,[int(cv2.imwrite_JPEG_QUALITY),jpg_QUALITY])
其中jpg_QUALITY<95
将减小文件大小。如果我们不指定任何内容,它将使用默认值。参考:如果我们没有指定任何内容,它将使用它的默认值。参考:但这不会改变输出图像的质量吗?压缩是如何影响图像大小的,我认为使用不同的比特率,如8位、16位,是导致图像大小增加的原因。请澄清这一点。是的,这将改变输出质量。通常更多的压缩==更少的大小==更少的质量。比特率也会影响大小,但压缩算法和压缩级别也会影响大小。我认为它们比比特率更重要,但我不确定that@Beeti:8位图像在JPEG文件中的比特率不为8。压缩会导致比特率下降,例如,每像素可以获得0.5比特。压缩质量决定了这一点。质量越低,丢失的数据越多,比特率越低。在16位图像中,开始时每像素的比特数更多,但仍然可以降低到非常低的比特率。在您的情况下,输入JPEG的质量低于输出JPEG,因此比特率较低。@CrisLuengo这是有道理的,那么openCV和scipy在编码时默认以较高的比特率保存图像?我们能用任何方法知道图像的比特率吗?谢谢你的回答。但是这不会改变输出图像的质量吗?压缩是如何影响图像大小的,我认为使用不同的比特率,如8位、16位,是导致图像大小增加的原因。请澄清这一点。是的,这将改变输出质量。通常更多的压缩==更少的大小==更少的质量。比特率也会影响大小,但压缩算法和压缩级别也会影响大小。我认为它们比比特率更重要,但我不确定that@Beeti:8位图像在JPEG文件中的比特率不为8。压缩会导致比特率下降,例如,每像素可以获得0.5比特。压缩质量决定了这一点。质量越低,丢失的数据越多,比特率越低。在16位图像中,开始时每像素的比特数更多,但仍然可以降低到非常低的比特率。在您的情况下,输入JPEG的质量低于输出JPEG,因此比特率较低。@CrisLuengo这是有道理的,那么openCV和scipy在编码时默认以较高的比特率保存图像?我们能用任何方法知道图像的比特率吗?谢谢你的回答。