gpt4 book ai didi

python - 使用 numpy 从图像数组的 RGB 值获取 (x,y) 坐标值

转载 作者:行者123 更新时间:2023-11-30 23:08:29 25 4
gpt4 key购买 nike

我是 python 新手,所以我真的需要这方面的帮助。

我对图像进行了灰度化和阈值处理,以便唯一存在的颜色是黑色和白色。

我不知道如何编写一个算法,该算法将为我提供图像数组上仅对应于白色像素的坐标 (x,y) 列表。

感谢任何帮助!

最佳答案

您肯定已经拥有强度值列表形式的图像数据吗?如果您使用的是 Anaconda,则可以使用 PIL Image 模块并调用 getdata() 来获取此强度信息。有些人建议使用 NumPy 方法或其他方法,这可能会提高性能。如果您想研究这一点,那就去做吧,我的答案可以适用于其中任何一个。

如果您已经有一个将灰度图像转换为黑白的函数,那么您应该具有该输出图像的强度信息,即从左上角到右下角的 0 和 1 列表。如果你有这个,你已经有了你的位置数据,它只是不是 (x,y) 形式。为此,请使用如下内容:

data = image.getdata()
height = image.getHeight()
width = image.getWidth()
pixelList = []

for i in range(height):
for j in range(width):
stride = (width*i) + j
pixelList.append((j, i, data[stride]))

其中data是0和1的列表(黑白),我假设您已经编写了getWidth()getHeight()不要只是复制我写的内容,了解循环在做什么。这将产生一个元组列表,pixelList,每个元组包含强度和位置信息,形式为(x,y,强度)。对于您正在做的事情来说,这可能是一种困惑的形式,但这就是想法。将三个值(x、y、强度)传递给 Pixel 对象或其他东西,而不是创建元组列表,会更加干净和易于访问。然后您可以从任何地方获取这些值中的任何一个。我鼓励您这样做,以便更好地组织,以便您可以自己编写代码。

无论哪种情况,将强度和位置存储在一起都可以使白色像素的分类变得非常容易。这里使用元组列表:

whites = []
for pixel in pixelList:
if pixel[2] == 1:
whites.append(pixel[0:2])

然后你就有了一个白色像素坐标列表。

关于python - 使用 numpy 从图像数组的 RGB 值获取 (x,y) 坐标值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31687572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com