gpt4 book ai didi

Opencv旋转后增加图像的大小

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:56 25 4
gpt4 key购买 nike

我在 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,图像分辨率为 300dpi,色彩空间为YCbCr。
  • 问题是生成的图像大小为 12.5 Mb,分辨率为 96 dpi,色彩空间为 RGB,压缩为“LZW”!

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

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

最佳答案

仅使用文件名调用cv2.imread,第二个参数使用默认值cv.IMREAD_COLORthe documentation说:

If set, always convert image to the 3 channel BGR color image.

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

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

关于Opencv旋转后增加图像的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com