Python - 来自numpy数组丢失真实像素的图像

时间:2016-05-17 07:52:35

标签: python image numpy image-processing jpeg

我有一张脸的jpg图片,我需要逐像素地访问图片(知道每个像素的值是多少),并使用某种DFS来改变背景颜色。

image = Image.open("pic.jpg")
image = np.array(image)

首先,为什么阵列的形状(473,354,3)?这对我没有意义。

当我这样做时

plt.imshow(image.reshape(473, -1))
plt.show()

我得到一张如下图片,其中只包含红色,蓝色和黄色(以及三者的混合色?)

这意味着数组中的值不是我可以可靠地用来做出边缘检测决策的。

为什么以及我该怎么办?

enter image description here

我希望像素值能够反映原始图像的真实颜色,而不是像上面那样。

实际图片中的背景有点白,我希望它们和所有其他像素值都保持这种状态,所以我可以实现我的算法。

1 个答案:

答案 0 :(得分:1)

3是因为每种颜色(蓝色,绿色红色)在数组中都有自己的条目。

对于边缘检测,您可能最好将图像折叠到B& W. OpenCV有cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)可以解决问题。

相关问题