我已经开始深入研究图像处理。好奇地知道一个简单问题的答案(我尝试使用谷歌搜索,但我想找不到令人满意的答案):
我有一个RGB图像:
然后我应用了简单的OpenCV命令:
img = cv2.imread(r'E:\ opencv \ elephant.jpg',0)
cv2.imwrite('updated_elephant.jpg',img)
最后得到输出图像:
回到问题,为什么输出图像的大小会增加?(cv2.cvtColor()函数也会发生同样的事情)任何与之相关的见解或示例都将受到赞赏。
感谢您的真诚关注。
最佳答案
JPEG是一种有损格式,在Wikipedia上有很好的描述。阅读。
允许编码器决定如何编码数据。一些会以一种方式对颜色进行下采样,而另一些会以其他方式进行,而另一些则完全不进行色度二次采样。
一些编码器将使用整数进行量化,因为在某些处理器上它会更快,而其他编码器则可能使用浮点,因为它们更重视精度。
一些编码器使用JPEG建议的系数表来丢弃高频,一些编码器使用自己的表-这是quality
设置。
因此,您可能会在不同平台上,或在具有不同编码器的同一平台上,或在具有相同编码器但软件版本不同的同一平台上,获得不同的文件大小和格式。
如果您想更详细地了解色度二次采样和质量设置,请在终端中使用 ImageMagick :
magick identify -verbose YOURIMAGE.JPG info:
如果您想花几个小时详细研究JPEG,我向您推荐这一系列视频-link。
关于python - 将图像的内存大小从RGB增加到Grey,OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62726603/