En dessinant un rectangle autour de tous les contours dans OpenCV Python
j'ai un code qui identifie les contours après l'application de filtres sur des images vidéo. Maintenant, dans mon cas je reçois 3 contours et je leur montre par dessiner des rectangles autour d'eux, ce que je veux faire est de dessiner un rectangle autour de tous ces 3 contour de rectangles. comme il sera d'un grand rectangle contenant de 3 détecté des rectangles.
Voici mon code simple de détecter et de dessiner des rectangles autour des contours.
im2, contours, hierarchy = cv2.findContours(canny_img,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
try: hierarchy = hierarchy[0]
except: hierarchy = []
# computes the bounding box for the contour, and draws it on the frame,
for contour, hier in zip(contours, hierarchy):
(x,y,w,h) = cv2.boundingRect(contour)
if w > 80 and h > 80:
cv2.rectangle(frame, (x,y), (x+w,y+h), (255, 0, 0), 2)
cv2.imshow('Motion Detector',frame)
- Qu'avez-vous essayé? Prenez un morceau de papier et de dessiner soi-même et penser à propos de l'algorithme utilisé.
- Avez-vous essayez de créer un ensemble de points à partir de tous les contours et de calculer la
boundingRect
sur ce jeu? Peut-être que cela fonctionne.
Vous devez vous connecter pour publier un commentaire.
Peut-être essayer quelque chose comme ceci:
Essentiellement, vous voulez garder une trace de ce que la plus petite des coordonnées x et y sont et ce le plus grand des coordonnées x et y (y compris la largeur et la hauteur) sont, et puis il suffit de dessiner un rectangle avec ces coordonnées.
Utilisation de numpy: