我在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)
我的问题是:我可以保留原始图像的主要属性吗?为什么旋转图像会改变这种尺寸?
注意:两个图像中的位深度均为24。
仅使用文件名调用cv2.imread
使用默认值cv.IMREAD_COLOR
作为第二个参数,the documentation说的是:
如果设置,请始终将图像转换为3通道BGR彩色图像。
因此,您的图像始终转换为RGB。您可以尝试使用cv.IMREAD_ANYCOLOR
作为imread
的第二个参数,但我不认为你可以在其上使用cv2.warpAffine
。
存储的DPI信息的差异源于您在没有任何元数据的情况下编写新图像的事实。 imwrite
允许您指定参数(请参阅here),但遗憾的是,它们没有很好的记录。我不确定这种数据是否可以用OpenCV开箱即用。