【发布时间】:2020-06-27 05:28:28
【问题描述】:
我试图在不使用 for 循环的情况下从二进制图像中找到前景对象的边界像素。如果特定像素坐标的四个邻居中的任何一个为零且该像素值为一,我将其指定为边界像素。它适用于 for 循环,但我不想使用循环,所以我可以用它做些什么。代码如下:
for i in range(len(PCR)):
cr_h = PCR[i,0]
cr_w = PCR[i,1]
n1 = img_cap_copy[cr_h-1,cr_w]
n2 = img_cap_copy[cr_h+1,cr_w]
n3 = img_cap_copy[cr_h,cr_w-1]
n4 = img_cap_copy[cr_h,cr_w+1]
n=[n1,n2,n3,n4]
if img_cap_copy[cr_h,cr_w]==1 and (n[0]==0 or n[1]==0 or n[2]==0 or n[3]==0):
Xc.append(cr_w)
Yc.append(cr_h)
这就是我在没有 for 循环的情况下尝试做的事情,这给了我错误'具有多个元素的数组的真值是模棱两可的。使用 a.any() 或 a.all()。'
cr_h=PCR[:,0]
cr_h=PCR[:,0]
n1 = img_cap_copy[cr_h-1,cr_w]
n2 = img_cap_copy[cr_h+1,cr_w]
n3 = img_cap_copy[cr_h,cr_w-1]
n4 = img_cap_copy[cr_h,cr_w+1]
n=[n1,n2,n3,n4]
if img_cap_copy[cr_h,cr_w]==1 and (n[0]==0 or n[1]==0 or n[2]==0 or n[3]==0):
Xc.append(cr_w)
Yc.append(cr_h)
【问题讨论】:
-
将示例图像发布到一些免费托管服务并放置 URL。然后定义边界像素!
标签: python image opencv processing pixel