OpenCV est Habile Détection des bords en C++
Je veux extraire les bords de la main, mais j'obtiens le résultat suivant. J'ai tenté d'ajuster le bas et le seuil haut, mais je ne peux toujours pas obtenir le résultat souhaité. J'ai inclus ci-dessous le code et sa sortie. Ce qui semble être le problème?
C'est le l'image de sortie généré par le code ci-dessous.
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
int main(){
cv::Mat image= cv::imread("open_1a.jpg");
cv::Mat contours;
cv::Mat gray_image;
cvtColor( image, gray_image, CV_RGB2GRAY );
cv::Canny(image,contours,10,350);
cv::namedWindow("Image");
cv::imshow("Image",image);
cv::namedWindow("Gray");
cv::imshow("Gray",gray_image);
cv::namedWindow("Canny");
cv::imshow("Canny",contours);
cv::waitKey(0);
}
OriginalL'auteur Og Namdik | 2012-08-16
Vous devez vous connecter pour publier un commentaire.
Modifier cette ligne
à
Le problème semble être que votre main dans l'échelle de gris est très proche de l'arrière-plan gris. J'ai appliqué Futé sur la teinte (couleur) parce que la couleur de la peau doivent être suffisamment différents.
Aussi, le Savant seuils de l'air un peu fou. La norme est que la hausse devrait être de 2x à 3x le plus bas. 350 est un peu trop et cela n'aide pas à résoudre le problème principal.
Modifier
avec ces seuils j'ai été en mesure d'extraire d'un bon contour
cv::Futé(image,les contours,35,90);
De lire un peu de théorie sur l'algorithme va vous aider à comprendre ce qui se passe et ce que vous devez faire pour l'améliorer.
wiki canny
sur googleToutefois, l'amélioration ci-dessus vous donnera de bien meilleurs résultats (à condition de mieux utiliser les seuils de 10, 350. Essayez (40, 120) )
OriginalL'auteur Sam