Opencv增加图像';旋转后的尺寸

Opencv增加图像';旋转后的尺寸,opencv,tiff,image-rotation,Opencv,Tiff,Image Rotation,我在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",

我在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。

仅使用文件名调用
cv2.imread
使用默认值
cv.imread\u COLOR
作为第二个参数,该参数表示:

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

因此,您的图像始终转换为RGB。您可以尝试使用
cv.IMREAD\u ANYCOLOR
作为
IMREAD
的第二个参数,但我认为您不能简单地使用
cv2.warpAffine

存储的DPI信息的差异源于这样一个事实,即您编写的新图像没有任何元数据
imwrite
允许您指定参数(请参阅),但遗憾的是,这些参数没有很好的文档记录。我不确定这种数据是否可以用OpenCV直接写入