.png 图像不能做二值灰度,而 .jpg 图像可以
.png image fail to do binary gray, while .jpg image can
非常简单的代码,我可以从 image1 中读取图像为 png 或 image2 为 jpg。不同格式的相同图像。
然后将较暗的部分滤掉为黑色,将较亮的部分显示为白色。
#image = mpimg.imread('image1.png')
image = mpimg.imread('image2.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
thresh = (180, 255)
binary = np.zeros_like(gray)
binary[(gray > thresh[0]) & (gray <= thresh[1])] = 1
不知何故,当我绘制 image1 的二进制文件时,它全是黑色,但 image2 看起来就像我倾向于做的那样。
问题很可能是由于 matplotlib.image
成功读取了 png
而 jpg
退回到使用 Pillow
。 png
读取产生的图像将是一个范围为 0.0 到 1.0 的浮点值数组,而 jpg
读取将是一个字节数组,其值为 0..255。因此,您的剪辑操作将导致全黑图像,因为一切都低于 1。
有关详细信息,请参阅 http://matplotlib.org/users/image_tutorial.html。
非常简单的代码,我可以从 image1 中读取图像为 png 或 image2 为 jpg。不同格式的相同图像。
然后将较暗的部分滤掉为黑色,将较亮的部分显示为白色。
#image = mpimg.imread('image1.png')
image = mpimg.imread('image2.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
thresh = (180, 255)
binary = np.zeros_like(gray)
binary[(gray > thresh[0]) & (gray <= thresh[1])] = 1
不知何故,当我绘制 image1 的二进制文件时,它全是黑色,但 image2 看起来就像我倾向于做的那样。
问题很可能是由于 matplotlib.image
成功读取了 png
而 jpg
退回到使用 Pillow
。 png
读取产生的图像将是一个范围为 0.0 到 1.0 的浮点值数组,而 jpg
读取将是一个字节数组,其值为 0..255。因此,您的剪辑操作将导致全黑图像,因为一切都低于 1。
有关详细信息,请参阅 http://matplotlib.org/users/image_tutorial.html。