已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
5天前关闭。
Improve this question的
我尝试简单地读取我创建的二进制掩码图像。当我使用
bw_mask = cv2.imread('image.png')
字符串
图像被读取为一个numpy零数组,看起来像:
array([[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
...,
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]], dtype=uint8)
型
请你解释给我为什么,我真的很想深入学习的原因,但在一个明确的外行话。彩色图像打开只是作为一个典型的图像(不数组)。
如果应用这些操作,为什么可以读取它?
bw_mask = cv2.imread('image.png', cv2.IMREAD_ANYDEPTH)
bw_mask = bw_mask.view(np.int32)
img_cv_16bit = bw_mask.astype(np.uint16)
img_cv_8bit = np.clip(img_cv_16bit // 16, 0, 255).astype(np.uint8)
result = cv2.resize(img_cv_8bit, (800, 600), interpolation=cv2.INTER_CUBIC)
plt.imshow(cv2.cvtColor(result, cv2.COLOR_BGR2RGB))
plt.show()
型
我仍然不明白为什么这是工作,我会感谢你的解释和回答。
1条答案
按热度按时间y3bcpkx11#
工作正常,但你应该明确表示只关心灰度:
个字符
这是特别真实的,因为(出于某种原因)您发布的图像实际上并没有以灰度保存:
的数据
型