2 votes

OpenCV Python compte les pixels

Je travaille sur un petit projet avec une application de OpenCV et je suis coincé avec quelque chose que je ne sais pas comment mettre en œuvre. Supposons que j'ai une image ( 1024x768 ). Dans cette image, il y a une boîte de délimitation rouge au centre.

Est-il possible de compter les pixels à l'intérieur de la boîte rouge en utilisant OpenCS ? étant donné que l'image est 1024x768 en dimension.

J'ai essayé d'utiliser le rectangle de délimitation en seuillant la couleur rouge et j'ai essayé d'utiliser convexhull mais alors je ne peux pas extraire combien de pixels se trouvent à l'intérieur du marqueur rouge.

5voto

I.Newton Points 1400

C'est simple. Il est clair que le gris intérieur et la couleur extérieure sont différents. Il suffit de seuiller l'image.

ret,thresh=cv2.threshold(img,133,255,cv2.THRESH_BINARY_INV)

Alors utilisez :

cv2.countNonZero(your_thresh_img)

Cela vous donne le nombre de pixels blancs, qui est le nombre dont vous avez besoin. Dans votre image, c'était 183920 pixels.

Modifier

import numpy as np
import cv2

img=cv2.imread("your_image.png",0)

def nothing(x):
  pass

cv2.namedWindow('image')

cv2.createTrackbar('min','image',0,255,nothing)
cv2.createTrackbar('max','image',0,255,nothing)

while(1):

 a = cv2.getTrackbarPos('min','image')
 b = cv2.getTrackbarPos('max','image')
 ret,thresh=cv2.threshold(img,a,b,cv2.THRESH_BINARY_INV)
 cv2.imshow("output",thresh)
 k = cv2.waitKey(10) & 0xFF
 if k == 27:
    break
print cv2.countNonZero(thresh)
cv2.destroyAllWindows()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X