2017-04-16 1 views
2

J'ai une liste de points qui sont les sommets d'un polygone, comme celui-ci:OpenCV: Comment créer un masque en forme de polygone?

std::vector<cv::Point2d> polygonPoints; 

Je dois créer un masque pour la fonction goodFeaturesToTrack dans OpenCV. Pour un rectangle, la meilleure façon de remplir la zone souhaitée avec 1 « s est comme ceci:

cv::Mat mask = cv::Mat::zeros(img.rows, img.cols, CV_8U); 
mask(boundingbox) = 1; 

Comment puis-je faire avec un polygone qui a 10+ bords? Existe-t-il une solution équivalente pour les polygones à côtés n?

Répondre

3

Géré pour trouver une réponse qui fonctionne!

cv::Mat mask = cv::Mat::zeros(img->rows, img->cols, CV_8U); 
cv::Point pts[5] = { 
    cv::Point(1, 6), 
    cv::Point(2, 7), 
    cv::Point(3, 8), 
    cv::Point(4, 9), 
    cv::Point(5, 10) 
}; 
cv::fillConvexPoly(mask, pts, 5, cv::Scalar(1));