为什么此递归功能代码没有给出正确的答案?

问题描述 投票:-2回答:1

我编写了一个代码,计算天空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。我要去哪里错了?

python image-processing astropy
1个回答
0
投票

我已经对递归函数的逻辑进行了一些编辑-基本上您的函数没有返回任何内容,因此我更改了一些分配以及如何存储计数。更正后的代码如下。请注意,我离开的i和j范围保持不变-但是,如果要搜索整个img矩阵,则可能应使用例如for i in range(len(img))for j in range(len(img[i]))之类的东西。

© www.soinside.com 2019 - 2024. All rights reserved.