我编写了一个代码,计算天空jpeg图片中的星星数量。在检测到具有255灰度数字的像素时,它将检查其相邻像素是否具有类似的颜色编码。如果相邻的255个像素的数量超过5个,它将一簇这样的像素声明为星形。下面是代码
img是使用cv2.imread读取灰度jpeg后获得的示例2d数组。
img=[[0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,0,0,0,0,0],[0,0,1,1,1,0,0,0,0,0],[0,0,1,1,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0]]
stars=0
def check_depth(i,j,count):
if img[i][j]==1:
img[i][j]=0
count+=1
check_depth(i+1,j,count)
check_depth(i,j+1,count)
check_depth(i,j-1,count)
for i in range (1,4):
for j in range (1,9):
count=0
check_depth(i,j,count)
if count>5:
stars+=1
print(stars)
它打印计数为0。我要去哪里错了?
我已经对递归函数的逻辑进行了一些编辑-基本上您的函数没有返回任何内容,因此我更改了一些分配以及如何存储计数。更正后的代码如下。请注意,我离开的i和j范围保持不变-但是,如果要搜索整个img
矩阵,则可能应使用例如for i in range(len(img))
和for j in range(len(img[i]))
之类的东西。