opencv-polylines多边形

polylines 画多边形 

方式一 

    cv::Mat src(600, 600, CV_8UC3, cv::Scalar(0,0,0));
    
    //创建多边形的点
    cv::Point points[2][4];
    points[0][0] = cv::Point(100, 115);
    points[0][1] = cv::Point(255, 135);
    points[0][2] = cv::Point(140, 365);
    points[0][3] = cv::Point(100, 300);
    points[1][0] = cv::Point(300, 315);
    points[1][1] = cv::Point(555, 335);
    points[1][2] = cv::Point(340, 565);
    points[1][3] = cv::Point(300, 500);
    //ppt[]要同时添加两个多边形顶点数组的地址头
    const cv::Point* pts[] = { points[0],points[1] };
    //npts[]要定义每个多边形的定点数
    int npts[] = { 4,4 };
    cv::polylines(src, pts, npts, 2, true, cv::Scalar(255,0,0), 5, 8, 0);
    /*
    参数1:作为画布的矩阵
    参数2:pts 折线顶点数组
    参数3:npts 折线顶点个数
    参数4:待绘制折线数
    参数5:是否是闭合折线(多边形)
    参数6:折线的颜色
    参数7:折线粗细
    参数8:线段类型  8或4
    参数9:缩放比例(0是不缩放,4是1/4)
    */
        
    cv::namedWindow("src");
    cv::imshow("src", src);
    cv::waitKey();
    return 0;

方式二

    cv::Mat src(600, 600, CV_8UC3, cv::Scalar(0,0,0));
    
    //创建多边形的点
    std::vector<cv::Point> pts;
    pts.push_back(cv::Point(100, 115));
    pts.push_back(cv::Point(255, 135));
    pts.push_back(cv::Point(140, 365));
    pts.push_back(cv::Point(100, 300));
        
    cv::polylines(src, pts,true, cv::Scalar(255,0,0), 5, 8, 0);
    /*
    参数1:作为画布的矩阵
    参数2:pts 折线顶点数组
    参数3:是否是闭合折线(多边形)
    参数4:折线的颜色
    参数5:折线粗细
    参数6:线段类型  8或4
    参数7:缩放比例(0是不缩放,4是1/4)
    */
        
    cv::namedWindow("src");
    cv::imshow("src", src);
    cv::waitKey();
    return 0;

注意:两种方式参数2的数据类型不同

 

 

 

 

posted @ 2020-09-05 13:04  天子骄龙  阅读(2066)  评论(0编辑  收藏  举报