Le dessin de la boîte Englobante autour de la taille de la Zone de contour
Je veux dessiner un rectangle autour de chaque contour fermé d'une superficie supérieure à un certain seuil, et pas seulement le plus grand contour. Comment puis-je faire?
Jusqu'à présent c'est ce que j'ai essayé:
contours, _ = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
rect = cv2.boundingRect(c)
if rect[2] < 100 or rect[3] < 100: continue
print cv2.contourArea(c)
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(im,(x,y),(x+w,y+h),(0,255,0),2)
cv2.putText(im,'Moth Detected',(x+w+10,y+h),0,0.3,(0,255,0))
cv2.imshow("Show",im)
cv2.waitKey()
cv2.destroyAllWindows()
J'ai essayé de réparer votre mise en forme du code, mais n'hésitez pas à modifier de nouveau si le sens de le code a changé, depuis les espaces les questions en Python.
Pourrais-tu décrire ce qu'est le problème que vous rencontrez? Quel est le comportement par rapport à ce que vous attendez? J'ai juste essayé votre code (post-édition), et il dessine les contours autour de plus d'un contour.
Salut Aurélien , Merci pour le Montage , il fonctionne maintenant , l'Indentation est le problème ., si vous souhaitez la voix, de réécriture de réponse et de mauvais vote.Merci
J'ai roulé mon dernier montage, car il a fondamentalement changé la nature de votre code. Voir ma réponse pour une version de travail.
Pourrais-tu décrire ce qu'est le problème que vous rencontrez? Quel est le comportement par rapport à ce que vous attendez? J'ai juste essayé votre code (post-édition), et il dessine les contours autour de plus d'un contour.
Salut Aurélien , Merci pour le Montage , il fonctionne maintenant , l'Indentation est le problème ., si vous souhaitez la voix, de réécriture de réponse et de mauvais vote.Merci
J'ai roulé mon dernier montage, car il a fondamentalement changé la nature de votre code. Voir ma réponse pour une version de travail.
OriginalL'auteur Mohamed Elfatih | 2014-04-30
Vous devez vous connecter pour publier un commentaire.
Rappelez-vous, votre niveau d'indentation questions en Python. Il est également intéressant de noter que votre code n'est pas forcément dessiner un cadre autour du plus grand contour, il dessine un cadre autour du dernier élément de
contours
. Heureusement, la solution est simple. Vous avez juste besoin de tiret vos appels àcv2.rectangle()
etcv2.putText()
afin qu'ils évaluent à chaque itération de boucle. Vous pouvez également éliminer un appel àcv2.boundingRect()
par l'expansion derect
enx,y,w,h
. Votre code serait alors:OriginalL'auteur Aurelius