zl程序教程

您现在的位置是:首页 >  后端

当前栏目

OpenCV绘制基本几何图形

Opencv 基本 绘制
2023-09-14 09:05:26 时间

1、概述

  案例:使用OpenCV绘制线、矩形、椭圆、圆形、多边形、文本(不支持绘制中文)

1.绘制线:line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,
                     int thickness = 1, int lineType = LINE_8, int shift = 0);img:在哪里绘制线pt1:起始点pt2:终止点color:线的颜色thickness:线条的宽度lineType:线段的类型。可以取值LINE_8, LINE_4, 和CV_AA, 分别代表8邻接连接线,4邻接连接线和反锯齿连接线。默认值为8邻接。为了获得更好地效果可以选用CV_AA(采用了高斯滤波)。shift:坐标小数点位,默认0就行2.绘制矩形rectangle(InputOutputArray img, Rect rec,
                          const Scalar& color, int thickness = 1,
int lineType = LINE_8, int shift = 0);img:在哪里绘制矩形rec:矩形坐标color:线条颜色thickness:线宽lineType:同上面线段ps:后三个参数可以不填写,直接默认就行3.绘制一个椭圆
ellipse(InputOutputArray img, Point center, Size axes,
                        double angle, double startAngle, double endAngle,
                        const Scalar& color, int thickness = 1,
                        int lineType = LINE_8, int shift = 0);img:在哪里绘制椭圆center:椭圆中心点位置axes:椭圆尺寸(长短轴)angle:旋转角度(顺时针方向)startAngle:绘制的其实角度endAngle:绘制的终止角度后面的参数同上4.绘制一个圆
circle(InputOutputArray img, Point center, int radius,
                       const Scalar& color, int thickness = 1,
                       int lineType = LINE_8, int shift = 0);img:在哪里绘制center:中心点坐标其他参数同上5.绘制多边形
fillPoly(InputOutputArray img, const Point** pts,
                         const int* npts, int ncontours,
                         const Scalar& color, int lineType = LINE_8, int shift = 0,
Point offset = Point() );img:绘制在哪里pts:多边形顶点集合npts:要绘制的多边形顶点数目ncontours:要绘制的多边形数量其他参数解释同上7.绘制文本
putText( InputOutputArray img, const String& text, Point org,
                         int fontFace, double fontScale, Scalar color,
                         int thickness = 1, int lineType = LINE_8,
                         bool bottomLeftOrigin = false );img:要绘制在哪里text:要绘制的文本org:第一个字符左下角坐标fontFace:字体类型,FONT_HERSHEY_SIMPLEX ,FONT_HERSHEY_PLAIN ,FONT_HERSHEY_DUPLEX fontScale:字体大小,我们设置为2号其他参数解释同上

2、代码示例

Mat src = Mat::zeros(500,500,CV_8UC3);//创建一个单通道黑色图片
    //绘制一条直线
    line(src,Point(0,0),Point(500,500),Scalar(125,125,125),1,LINE_AA);

    //绘制一个矩形
    Rect rect = Rect(125, 125, 225, 225);
    Scalar color = Scalar(125,125,125);
    rectangle(src,rect,color,2,LINE_8);

    //绘制一个椭圆
    ellipse(src,Point(250,250),Size(src.cols / 4, src.rows / 8), 90, 0, 360, color, 2, LINE_8);

    //绘制一个圆
    circle(src,Point(250,250),100,color,1,LINE_AA);

    //绘制多边形并对其进行填充
    Point pts[1][5];
    pts[0][0] = Point(100, 100);
    pts[0][1] = Point(100, 200);
    pts[0][2] = Point(200, 200);
    pts[0][3] = Point(200, 100);
    pts[0][4] = Point(100, 100);
    const Point* ppts[] = { pts[0] };
    int npt[] = { 5 };
    fillPoly(src, ppts, npt, 1, color, 8);

    //绘制文本
    putText(src,"hello OpenCV",Point(100,100),FONT_HERSHEY_COMPLEX, 1.0, Scalar(12, 23, 200), 3, 8);

    QImage qImage = QImage(src.data,src.cols,src.rows,src.step,QImage::Format_BGR888);
    label->setFixedSize(QSize(qImage.width(),qImage.height()));
    label->setScaledContents(true);
    label->setPixmap(QPixmap::fromImage(qImage));

3、图片

 本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓