Opencv旋转后增加图像大小

问题描述 投票:2回答:1

我在python中使用opencv旋转图像,原始和结果图像是不同的东西,我正在通过这部分代码进行转换:

img = cv2.imread("image.tif")    
new_image = cv2.getRotationMatrix2D((cols / 2, rows / 2), correction_angle, 1)
dst = cv2.warpAffine(img, new_image , (cols, rows))
cv2.imwrite("Rotated_image.tif", dst)
  • 原始图像的大小为1.7 Mb,图像的分辨率为300 dpi,色彩空间为YCbCr。
  • 问题是得到的图像尺寸为12.5 Mb,96 dpi,颜色空间为RGB,压缩为“LZW”!

我的问题是:我可以保留原始图像的主要属性吗?为什么旋转图像会改变这种尺寸?

注意:两个图像中的位深度均为24。

opencv tiff image-rotation
1个回答
0
投票

仅使用文件名调用cv2.imread使用默认值cv.IMREAD_COLOR作为第二个参数,the documentation说的是:

如果设置,请始终将图像转换为3通道BGR彩色图像。

因此,您的图像始终转换为RGB。您可以尝试使用cv.IMREAD_ANYCOLOR作为imread的第二个参数,但我不认为你可以在其上使用cv2.warpAffine

存储的DPI信息的差异源于您在没有任何元数据的情况下编写新图像的事实。 imwrite允许您指定参数(请参阅here),但遗憾的是,它们没有很好的记录。我不确定这种数据是否可以用OpenCV开箱即用。

© www.soinside.com 2019 - 2024. All rights reserved.