首页 > 解决方案 > 如何使用 Kivy 正确读取图像像素?

问题描述

我正在尝试获取HxWx3RGB 数组中的图像像素值,其中HW是图像的高度和宽度。首先,我曾经plt.imread(filename)获得所需的数组,一切正常。但是,我必须使用kivy相同的角色来实现。为了做到这一点,我一直在做以下事情:

from kivy.core.image import Image as CoreImage    
im = CoreImage(filename)
pixels = np.frombuffer(im.image._data[0].data, dtype=np.uint8).reshape((im.image._data[0].height, -1, 3))

im.image._data[0].data是一个看起来像这样的字节字符串

b'@Vn>Tl/H^=Vl6Oc.CX\xad\xbe\xd2\xd2\xe1\xf4\xce\xdd\xf0\xc6\xd9\xe8\xc6\xdd\xeb\xaa\xc6\xd2\xbb\xd9\xe4\xb6\xd4\xdf\xcd\xe9\xf5o\x8b\x97\x00\x16#\x1e4A\x1c/=\x11!0\x'

它继续......

但是,我在这段代码中遇到了一些问题。

首先,当我显示像素的内容(来自np.buffer我想来自)时,似乎有一个“黑色”条添加到图片中,因为我可以看到(0,0,0)每行都添加了一个元组。

图像边缘的黑条

这个黑色条增加了我的数组的大小,并使其.reshape不适用于某些图片。

有谁知道如何在重塑之前去除黑色条带?我正在尝试使用最少的 for 循环。

标签: pythonimage-processingkivy

解决方案


推荐阅读