web-dev-qa-db-ja.com

OpenCV:ポリゴンの形をしたマスクを作成するにはどうすればよいですか?

次のように、ポリゴンの頂点であるポイントのリストがあります。

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

OpenCVでgoodFeaturesToTrack関数のマスクを作成する必要があります。長方形の場合、目的の領域を1で埋める最も簡単な方法は次のとおりです。

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

10以上のエッジを持つポリゴンでこれを行うにはどうすればよいですか? n辺のポリゴンに相当する解決策はありますか?

10
Abs

うまくいく答えを見つけることができました!

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) );
10
Abs