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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- OpenCV-利用其它widthStep方法把interest——img的所有像素值增加200
- 使用C++ OpenCV实现椭圆区域检测与Aruco码的生成与检测并估计位姿
- Opencv学习笔记(九)光流法
- openCV基本绘图函数—-画圆函数cvCircle
- ubuntu安装opencv的方法
- Android OpenCV 4.6 透视变换
- Eigen 与 OpenCV 数据转换
- OpenCV这么简单为啥不学——1.9、cvtColor颜色空间转换(全色值效果演示)
- 独家|OpenCV 1.3 矩阵的掩膜操作(附链接)
- OpenCV 叠加应用 remap
- 学习Linux下的OpenCV技术,实现图像处理与分析(opencvlinux)