OpenCV - Floodfill sur un nouveau tapis
Donné un point sur une image, j'aimerais remplir tous les points connecté à ce point, mais sur une nouvelle image. Un naïf façon de le faire est de remplir l'image d'origine à une magie particulière de la couleur de la valeur. Puis, visite de chaque pixel, et la copie de tous les pixels ayant cette magie des couleurs de la valeur de la nouvelle image. Il doit y avoir une meilleure façon!
source d'informationauteur 1''
Vous devez vous connecter pour publier un commentaire.
Pourquoi n'utilisez-vous pas la deuxième variante de la cv::diffuseur pour créer un masque?
Image d'origine
cv::Mat img = cv::imread("squares.png");
Première variante
cv::floodFill(img, cv::Point(150,150), cv::Scalar(255.0, 255.0, 255.0));
C'est le
img
Deuxième variante
cv::Mat mask = cv::Mat::zeros(img.rows + 2, img.cols + 2, CV_8U);
cv::floodFill(img, mask, cv::Point(150,150), 255, 0, cv::Scalar(), cv::Scalar(), 4 + (255 << 8) + cv::FLOODFILL_MASK_ONLY);
C'est le
mask
.img
ne change pasSi vous y allez avec ce bien, notez que: