openCV 小结7——基本图形的绘制

1.用于绘制椭圆的ellipse函数

int thickness=2;
int lineType=8;
double angle=45;

ellipse(img,//图像
    Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2),//椭圆中心
    Size(WINDOW_WIDTH/4,WINDOW_WIDTH/16),//椭圆的宽度和高度
    angle,//倾角(椭圆旋转角度[顺时针])
    0,//弧度范围
    360,
    Scalar(255,129,0),//图形颜色
    thickness,//线宽
    lineType);//线型

2.用于绘制圆的circle函数

int thickness=-1;
int lineType=8;

circle(img,//图像
    Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2),//圆心
    WINDOW_WIDTH/32,//半径
    Scalar(0,0,255),//颜色
    thickness,//线宽
    lineType);//线型

3.用于绘制直线的line函数

int thickness=2;
int lineType=8;

line(img,//图像
    Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2),//线段起点
    Point(WINDOW_WIDTH/4,WINDOW_WIDTH/4),//线段终点
    Scalar(0,0,0),//颜色
    thickness,//线宽
    lineType);//线型

4.用于绘制填充多边形的fillPoly函数。
函数原型:

void cv::fillPoly(cv::Mat&,//图像
         const Point**,// 指向多边形的数组指针
         const int*,//多边形顶点个数的数组
         int, //多边形的数量
         const Scalar&,//多边形颜色
         int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)
         int shift = 0, // 偏移量(坐标点的小数点位数)
         cv::Point offset = Point()); //整体偏移量

使用方法:

    Point point1[3][4];
    point1[0][0] = Point(200, 40); /* 三角形的点的相关信息 */
    point1[0][1] = Point(150, 80); 
    point1[0][2] = Point(250, 80); 
    point1[1][0] = Point(150, 100); /* 正方形的相关信息 */
    point1[1][1] = Point(250, 100); 
    point1[1][2] = Point(250, 200); 
    point1[1][3] = Point(150, 200);

    const Point *ppt[2]={point1[0],point1[1]};
    int npts[2] = {3, 4};/* 三角形有三个有效点正方形有四个有效点 */
    Scalar color = Scalar(200, 100, 250);/* 颜色参数 */
    fillPoly(testImage, ppt, npts, 2, color);

4.用于绘制多边形的polylines函数
函数原型:

void polylines(
        cv::Mat& img, 
        const cv::Point** pts, 
        int* npts, 
        int ncontours, // 
        bool isClosed, // 如果是true, 则连接首尾两点
        const cv::Scalar& color, 
        int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)
        int shift = 0 // 偏移量
    );

5.用于绘制长方形的rectangle函数
函数原型:

void rectangle(InputOutputArray img,
        Point pt1,
        Point pt2,
        const Scalar& color,
        int thickness=1,
        int lineType=8,
        int shift=0);

猜你喜欢

转载自blog.csdn.net/qq_37390296/article/details/82622884