因为 opencv 存储的视频是 RGB 编码的,写入时把三通道都用 depth 填充了,先把 depth 单通道分离出来
import cv2
"""
RGB三通道相同的24位depth 保存为 16位单通道
"""
lab_d = cv2.imread('lab_d.png') # 3通道值相同
b = cv2.split(lab_d)[0] # 只要1个通道
c = b.astype('uint16')
c *= 256
cv2.imwrite('lab_d16.png', c)
通过指定 cv2.IMREAD_ANYDEPTH 读取任意深度的图片
"""
通过指定 cv2.IMREAD_ANYDEPTH 读取16位深度的图片
cv2.imwrite 图片实际深度多少 就写成多少深度的
"""
img = cv2.imread('lab_d16.png', cv2.IMREAD_ANYDEPTH) # 任意深度图片
print(img.shape)
print(img.dtype) # uint16
print(img[20][20])
网友评论