[英]Opening and saving a .bmp file changes bit depth
我有一个 bitmap 格式的文件test.bmp
。 查看其属性时,文件的位深度为 32。这是正确的,因为文件格式应该是 RGBA。
出于测试目的,我使用cv2
打开此文件,然后保存它:
img_path = os.path.join(path_to_folder, "test.bmp")
img = np.array(cv2.imread(img_path, flags=cv2.IMREAD_UNCHANGED))
当我打印形状时,我丢失了有关 alpha 通道的信息。
img.shape - (1200, 1920, 3)
我再次保存图像以查看位深度是否守恒:
out_f_name = os.path.join(save_to_test, "test_save.bmp")
cv2.imwrite(out_f_name, img)
查看保存图像的位深度时,我得到24 。
这是一个问题,因为我需要output 深度为 32 以供进一步使用。
我使用 4.7.0 版的cv2
我已经尝试过你所描述的,但我无法重现你遇到的错误,对我来说一切都很好。 具有 4 个通道的原始 BMP 由 OpenCV 正确加载,当我写入图像时,生成的图像具有 32 位深度。
这是我的代码:
import cv2 as cv
import numpy as np
img_path = "C:\\Users\\me\\Downloads\\snail4.bmp"
im = cv.imread(img_path, flags=cv.IMREAD_UNCHANGED)
print(im.shape)
(height, width, channels) = im.shape
cv.imshow('original', im)
for i in range(channels):
s = im[:, :, i]
cv.imshow(f'channel {i}',s)
cv.waitKey(0)
cv.destroyAllWindows()
cv.imwrite(img_path[:-4] + '_imwritten.bmp', im)
我有 python 3.10.4,numpy==1.24.1 和 opencv-python==4.7.0.68
希望有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.