Je veux être plus efficace avec mon code. J'ai un PNG et je veux découper l'image en boîtes. Le but est de compter le nombre de boîtes où j'ai au moins un pixel non noir. Je n'ai qu'une seule variable N.
Cette variable définit la longueur de chaque boîte. Si nous laissons P être la plus grande longueur de mon image, alors la longueur de chaque boîte est P/N.
Nous découpons également l'image de manière à ce qu'il y ait une boîte dans le coin supérieur gauche. De plus, il se peut ,par la taille de l'image, que mes cases ne soient pas carrés.
Dans ce cas-là, on les considère toujours comme des boîtes dont une partie est totalement noir.
Voici mon programme :
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 from skimage import io import numpy as np def nombre_boite(img, N): t=0 i,j,k = img.shape step=int(max(i,j)/N) for k1 in range(0, i, step): for k2 in range(0, j, step): if (img[k1:k1+step,k2:k2+step] == 0).any(): t += 1 return N
Pour moi, c'est lent. Le gros problème, ce sont mes deux boucles imbriquées. Je veux m'en débarrasser mais je ne sais pas comment y parvenir.
Je dirais que le broadcasting de Numpy pourrait m'aider mais je ne vois pas comment dans cette situation. Merci pour votre aide !
Partager