繁体   English   中英

打开和保存 a.bmp 文件更改位深度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM