【问题标题】:OpenCV: How to create a mask in the shape of a polygon?OpenCV:如何创建多边形形状的蒙版?
【发布时间】:2017-09-12 13:52:36
【问题描述】:

我有一个多边形顶点列表,如下所示:

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 边多边形的等效解决方案?

【问题讨论】:

    标签: c++ opencv mask


    【解决方案1】:

    设法找到有效的答案!

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

    【讨论】:

    • 不错!结合三角测量,您可以通过这种方式处理任何闭合轮廓的点集。
    • 在查找cv::fillConvexPoly 之后,我找到了cv::fillPoly。所以看起来OpenCV也可以处理更复杂的点集。
    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2020-07-20
    相关资源
    最近更新 更多