numpy 分形的盒计数功能不起作用

deyfvvtc  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(160)

我做了一个python程序来拍摄图像并确定不同网格大小的分形维数,用于盒子计数。我以前有它工作,它被删除了,我不记得我是怎么得到它的,但我现在有类似的东西。
这是我当前的代码

def count(image, size):
    N=0
    step=size
    for i in range(0, Lx, step):
       for j in range(0, Ly, step):
           if (img_matrix[i:step,j:step] == 0).any(): 
               N += 1
               return N
       
size=np.arange(0,10, 1)
N=0
Ns=[]
for s in size:
    N=count(img,s)
    Ns.append(N)`

它只给出1作为Ns的值,我该如何解决这个问题?

z2acfund

z2acfund1#

要让它回到你记录的值,你只需要做一些小的调整。
1.在count_boxes函数中,需要将切片从i:stepj:step-〉更改为i:i+stepj:j+step
1.你每次都是在第一次迭代时从同一个函数返回,所以你需要dentent return语句,这样它在循环完成之前不会发生。
该函数看起来像这样:

def count_boxes(image, box_size):
    N=0
    step=box_size
    for i in range(0, Lx, step):
       for j in range(0, Ly, step):
           if (img_matrix[i:i+step,j:j+step] == 0).any():
               N += 1
    return N

附加说明:

  • 你有一些缩进错误,我假设只是从复制和粘贴格式错误。
  • 你在img = Image.fromarray(...)对象行创建了img,然后将其传递给count_boxes函数,但之后从未对它做过任何事情,所以它是无用的。
  • 你应该看看opencv cv2的阈值和灰度特性。

相关问题