2015-04-08 1 views
0

J'ai une image comme celle-ci! [Entrez la description de l'image ici] [1]. La partie non-noire est développée à chaque itération. Donc, après un certain point, j'ai besoin d'agrandir l'image finale afin que le non-noir puisse s'intégrer. Pour l'instant, ce que je fais est de trouver le contour de l'image non-noire, trouver la boîte englobante contours et vérifiez la largeur/hauteur de la boîte. Dans un premier temps cela fonctionne, mais après quelques itérations mon programme trouve une boîte englobante de taille 1 (il semble qu'elle ne trouve aucun contour). Quel pourrait être le problème? Ps: le programme est une mosaïque à partir d'un fichier vidéo, j'ai suivi le tutoriel opencv pour trouver l'homographie et d'autres choses.Opencv hauteur/largeur d'une partie de l'image

EDIT Désolé, mais je devais supprimer des images

+0

Avez-vous appliqué [threshold] (http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#threshold) pour les pixels non noirs avant de trouver des contours? – Kornel

+0

Oui, d'abord j'utilisais Canny, puis je passais au seuil! – bjorn

+0

Désolé pour le double post, mais pensez-vous qu'il existe un moyen plus rapide de trouver un contour/un cadre de délimitation? – bjorn

Répondre

1

Juste une suggestion:

Il est plus facile de simplement itérer à travers chaque élément dans la matrice et enregistrer les coordonnées de la plus haute, plus basse, les éléments non-nuls les plus à gauche et les plus à droite. Ce seront les quatre coins de votre rectangle de délimitation droite. Bien sûr, il ne s'agit pas nécessairement du rectangle de la zone minimale entourant les pixels non nuls (pas un rectangle pivoté), mais peut en outre être utilisé comme une ROI.

+0

merci, je vais essayer et vous faire savoir! – bjorn

+0

J'ai trouvé ceci pour extraire les points extrêmes http://docs.opencv.org/master/d1/d32/tutorial_py_contour_properties.html, mais c'est pour python. Il existe une manière similaire de le faire en C++? Je suis désolé mais je suis très nouveau pour opencv! – bjorn

+0

Ceci est aussi basé sur 'cv :: findContours()', mais toutes les fonctions ont aussi la version C++, c'est à dire [Tutorial - Bounding rects/circles] (http://docs.opencv.org/master/da/d0c/tutorial_bounding_rects_circles .html) – Kornel