08_Opencv绘制形状和文字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gzx110304/article/details/88763907

08_Opencv绘制形状和文字

一.cv::Point与cv::Scalar

  • Point表示2D平面上的一个点(x, y)

    Point p;
    p.x = 11;
    p.y = 14;
    

    或者

    Point p = Point(11, 14);
    
  • Scalar表示四个元素的向量

    Scalar(a, b, c, d)//a = blue, b = green, c = red, d = alpha
    

二.绘制线、矩形、圆、椭圆、多边形

  • 绘制线:cv::line

    • 第一个参数:表示绘制的目标图像的Mat对象
    • 第二个参数:表示绘制的起点坐标的Point对象
    • 第三个参数:表示绘制的终点坐标的Point对象
    • 第四个参数:表示绘制线的颜色的Scalar对象
    • 第五个参数:表示线的宽度
    • 第六个参数:表示线的类型(LINE_4\LINE_8\LINE_AA)
    Mat src(400, 400, CV_8UC3, Scalar(0, 0, 0));
    Point p1 = Point(100, 100);
    Point p2 = Point(300, 300);
    line(src, p1, p2, Scalar(255, 0, 0), 1, LINE_8);
    imshow("src image", src);
    

    在这里插入图片描述

  • 绘制椭圆:cv::ellipse

    • 第一个参数:表示背景图像的Mat对象
    • 第二个参数:表示椭圆中心点的Point对象
    • 第三个参数:表示椭圆半径的Size对象,如Size(src.cols/4, src.rows/8)
    • 第四个参数:表示椭圆沿椭圆中心点的顺时针方向旋转的角度
    • 第五个参数:表示椭圆弧长绘制的开始角度
    • 第六个参数:表示椭圆弧长绘制的结束角度
    • 第七个参数:表示绘制线的颜色的Scalar对象
    • 第八个参数:表示线的宽度
    • 第九个参数:表示线的类型(LINE_4\LINE_8\LINE_AA)
    Mat src(400, 400, CV_8UC3, Scalar(0, 0, 0));
    ellipse(src, Point(src.cols/2, src.rows/2), Size(src.cols/4, src.rows/8), 90, 0, 360, Scalar(255, 0, 0), 1, LINE_8);
    ellipse(src, Point(src.cols/2, src.rows/2), Size(src.cols/4, src.rows/8), 0, 0, 360, Scalar(255, 0, 0), 1, LINE_8);
    ellipse(src, Point(src.cols/2, src.rows/2), Size(src.cols/4, src.rows/8), 90, 0, 180, Scalar(0, 0, 255), 1, LINE_8);
    imshow("src image", src);
    

    在这里插入图片描述

  • 绘制矩形:cv::rectange

    • 第一个参数:表示背景图像(画布)的Mat对象
    • 第二个参数:表示矩形范围Rect对象,Rect对象的第一个参数表示矩形左上角顶点的x坐标,第二个参数表示矩形左上角顶点的y坐标,第三个参数表示矩形的宽度,第四个参数表示矩形的高度
    • 第三个参数:表示绘制线的颜色的Scalar对象
    • 第四个参数:表示线的宽度
    • 第五个参数:表示线的类型(LINE_4\LINE_8\LINE_AA)
    Mat src(400, 400, CV_8UC3, Scalar(0, 0, 0));
    rectangle(src, Rect(src.cols/2 - 150, src.rows/2 - 150, 300, 300), Scalar(255, 0, 0), 1, LINE_8);
    imshow("src image", src);
    

    在这里插入图片描述

  • 绘制圆:cv::circle

    • 第一个参数:表示背景图像(画布)的Mat对象
    • 第二个参数:表示圆心坐标的Point对象
    • 第三个参数:表示圆的半径
    • 第四个参数:表示绘制线的颜色的Scalar对象
    • 第五个参数:表示线的宽度
    • 第六个参数:表示线的类型(LINE_4\LINE_8\LINE_AA)
    Mat src(400, 400, CV_8UC3, Scalar(0, 0, 0));
    circle(src, Point(src.cols/2, src.rows/2), 150, Scalar(255, 0, 0), 1, LINE_8);
    imshow("src image", src);
    

    在这里插入图片描述

  • 绘制填充多边形:cv::fillPoly

    • 第一个参数:表示背景图像(画布)的Mat对象
    • 第二个参数:表示要绘制的轮廓的点的Point的二级指针,有二维数组初始化
    • 第三个参数:表示对于轮廓需要绘制的点的个数,为一位数组或者一级指针
    • 第四个参数:绘制的轮廓数
    • 第五个参数:表示绘制线的颜色的Scalar对象
    • 第六个参数:表示线的类型(LINE_4\LINE_8\LINE_AA)
    Mat src(400, 400, CV_8UC3, Scalar(0, 0, 0));
    Point pts[2][4];
    pts[0][0] = Point(50, 50);
    pts[0][1] = Point(350, 50);
    pts[0][2] = Point(350, 350);
    pts[0][3] = Point(50, 350);
    
    pts[1][0] = Point(100, 100);
    pts[1][1] = Point(300, 100);
    pts[1][2] = Point(300, 300);
    pts[1][3] = Point(100, 300);
    
    const Point* ppts[] = {pts[0], pts[1]};
    
    const int npts[] = { 4, 4 };
    
    int ncoutours = 2;
    
    
    fillPoly(src, ppts, npts, ncoutours, Scalar(255, 0, 0), LINE_8);
    imshow("src image", src);
    

    在这里插入图片描述

三.绘制文字:cv::putText

  • 第一个参数:表示背景图像(画布)的Mat对象

  • 第二个参数:表示要绘制的文字内容

  • 第三个参数:绘制文字的位置坐标的Point对象

  • 第四个参数:待绘制文字的字体

  • 第五个参数:待绘制文字的缩放比例

  • 第六个参数:表示绘制线的颜色的Scalar对象

  • 第七个参数:表示线的宽度

  • 第八个参数:表示线的类型(LINE_4\LINE_8\LINE_AA)

    Mat src(400, 400, CV_8UC3, Scalar(0, 0, 0));
    putText(src, text, Point(src.cols/2 - 60, src.rows/2 - 20), CV_FONT_HERSHEY_COMPLEX, 1.0, Scalar(0, 0 ,255), 2, LINE_8);
    imshow("src image", src);
    

    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gzx110304/article/details/88763907
今日推荐