gpt4 book ai didi

Python:为边缘检测设置一个带有序列错误的数组元素

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:18 24 4
gpt4 key购买 nike

我在使用序列设置数组元素时出错,我不确定如何修复它。触发错误的行是:

ret[q,l] = (50,255,20)
ValueError: setting an array element with a sequence.

我想做的是将灰度图像中的脱粒数组(位于边缘)中的每个像素更改为绿色,但是我不断收到此错误。

这也是我的边缘检测代码的其余部分:

def edgeDetect(img, threshold):
ret = img.copy()
thresh = []
h = img.shape[0]
w = img.shape[1]
for y in range(1, h-2):
for x in range(1, w-2):
gx = 0
gy = 0
gx = (img.item(y, x)*0 + img.item(y + 1, x)*0 + img.item(y-1, x)*0 + img.item(y, x+1)*2 + img.item(y, x-1)*-2 + img.item(y+1, x+1)*1 + img.item(y-1, x-1)*-1 + img.item(y+1, x-1)*-1 + img.item(y-1, x+1)*1)
gy = (img.item(y, x)*0 + img.item(y + 1, x)*-2 + img.item(y-1, x)*2 + img.item(y, x+1)*0 + img.item(y, x-1)*0 + img.item(y+1, x+1)*-1 + img.item(y-1, x-1)*1 + img.item(y+1, x-1)*-1 + img.item(y-1, x+1)*1)
result = gx**2 + gy**2
if(result > float(threshold)**2):
thresh.append([y,x])
for p in range(len(thresh)):
print()
q, l = thresh[p]
img[q,l] = (50,255,20)
return ret

最佳答案

您可能正在尝试将 3 channel 值(如果使用 OpenCV,则为 RGB 或 BGR)设置为单 channel 数组(即灰度)。

换句话来说,img数组的形状是什么?如果您的图像是 256x256 像素,那么形状是 (256,256) 还是 (256,256,3)?如果是后者,您应该能够将像素值(三元组)设置为 img[row,col,:] = (r,g,b)

如果我假设img只是单 channel ,那么你需要做的就是将现有的单 channel 图像转换为3 channel ,然后设置颜色。

OpenCV 的 cvtColor(...) 是一种将灰度图像转换为 BGR/RGB 的简单方法,但您也可以使用直接的 numpy 命令执行相同的操作。

关于Python:为边缘检测设置一个带有序列错误的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35564875/

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