OpenCV 基本图形绘制函数详解
程序员文章站
2022-06-21 17:46:09
用于绘制直线的line函数; 用于绘制椭圆的ellipse函数; 用于绘制矩形的rectangle函数; 用于绘制圆的circle函数; 用于绘制填充的多边形的fillpoly...
- 用于绘制直线的line函数;
- 用于绘制椭圆的ellipse函数;
- 用于绘制矩形的rectangle函数;
- 用于绘制圆的circle函数;
- 用于绘制填充的多边形的fillpoly函数。
#include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; #define window_width 600 // 定义窗口大小的宏 #define window_name1 "原子图" //为窗口标题定义的宏 #define window_name2 "多边形图以及画线" //为窗口标题定义的宏 /***绘制椭圆***/ void drawellipse(mat img, double angle) { int thickness = 2; // 线宽 int linetype = 8; // 线性,8 代表联通线性 ellipse(img, point(window_width / 2, window_width / 2), size(window_width / 4, window_width / 16), angle, // 角度,0~360 度 0, 360, scalar(255, 129, 0), thickness, linetype); } /*绘制实心圆*/ void drawfilledcircle(mat img, point center) { int thickness = -1; // 线粗-1,代表实心 int linetype = 8; // 线性,8 代表联通线性 circle(img, center, window_width / 32, scalar(0, 0, 255), thickness, linetype); } /*凹多边形绘制*/ void drawpolygon(mat img) { int linetype = 8; // 创建一些点 point rookpoints[1][20]; rookpoints[0][0] = point(window_width / 4, 7 * window_width / 8); rookpoints[0][1] = point(3 * window_width / 4, 7 * window_width / 8); rookpoints[0][2] = point(3 * window_width / 4, 13 * window_width / 16); rookpoints[0][3] = point(11 * window_width / 16, 13 * window_width / 16); rookpoints[0][4] = point(19 * window_width / 32, 3 * window_width / 8); rookpoints[0][5] = point(3 * window_width / 4, 3 * window_width / 8); rookpoints[0][6] = point(3 * window_width / 4, window_width / 8); rookpoints[0][7] = point(26 * window_width / 40, window_width / 8); rookpoints[0][8] = point(26 * window_width / 40, window_width / 4); rookpoints[0][9] = point(22 * window_width / 40, window_width / 4); rookpoints[0][10] = point(22 * window_width / 40, window_width / 8); rookpoints[0][11] = point(18 * window_width / 40, window_width / 8); rookpoints[0][12] = point(18 * window_width / 40, window_width / 4); rookpoints[0][13] = point(14 * window_width / 40, window_width / 4); rookpoints[0][14] = point(14 * window_width / 40, window_width / 8); rookpoints[0][15] = point(window_width / 4, window_width / 8); rookpoints[0][16] = point(window_width / 4, 3 * window_width / 8); rookpoints[0][17] = point(13 * window_width / 32, 3 * window_width / 8); rookpoints[0][18] = point(5 * window_width / 16, 13 * window_width / 16); rookpoints[0][19] = point(window_width / 4, 13 * window_width / 16); const point* ppt[1] = { rookpoints[0] }; // 多边形定点集 int npt[] = { 20 }; // 多边形定点数目 fillpoly(img, ppt, npt, 1, scalar(255, 255, 255), // 多边形颜色:白色 linetype); } /*线绘制*/ void drawline(mat img, point start, point end) { int thickness = 2; int linetype = 8; line(img, start, end, scalar(0,0,0), // 黑色 thickness, linetype); } int main(int argc, char ** argv) { mat atomimage = mat::zeros(window_width, window_width, cv_8uc3); mat rookimage = mat::zeros(window_width, window_width, cv_8uc3); // 椭圆绘制 drawellipse(atomimage, 0); drawellipse(atomimage, 90); drawellipse(atomimage, 45); drawellipse(atomimage, -45); // 绘制圆心 drawfilledcircle(atomimage, point(window_width / 2, window_width / 2)); // 绘制多边形 drawpolygon(rookimage); // 绘制矩形 rectangle(rookimage, point(0, 7 * window_width / 8), point(window_width, window_width), scalar(0, 255, 255), -1, 8); // 绘制一些线段 drawline(rookimage, point(0, 15 * window_width / 16), point(window_width, 15 * window_width / 16)); drawline(rookimage, point(window_width / 4, 7 * window_width / 8), point(window_width / 4, window_width)); drawline(rookimage, point(window_width / 2, 7 * window_width / 8), point(window_width / 2, window_width)); drawline(rookimage, point(3 * window_width / 4, 7 * window_width / 8), point(3 * window_width / 4, window_width)); // ---------------------------<3>显示绘制出的图像------------------------ imshow(window_name1, atomimage); movewindow(window_name1, 0, 200); imshow(window_name2, rookimage); movewindow(window_name2, window_width, 200); waitkey(0); return(0); }
运行:
参考:
《opencv3 编程入门》 毛星云 p104
到此这篇关于opencv 基本图形绘制函数的文章就介绍到这了,更多相关opencv 基本图形函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: 无聊发个朋友圈的图片和句子(一看必赞的朋友圈语录)
下一篇: shell——流程控制
推荐阅读
-
OpenCV_Python API 官方文档学习_ cv2 绘制基本几何图形
-
【基于C++和Python的Opencv3学习笔记之基本图形的绘制】
-
Android自定义控件绘制基本图形基础入门
-
Android编程开发之在Canvas中利用Path绘制基本图形(圆形,矩形,椭圆,三角形等)
-
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
-
iOS App开发中用CGContextRef绘制基本图形的基本示例
-
UG9.0怎么使用表达式/函数绘制图形?
-
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
-
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
-
Three.js的使用及绘制基础3D图形详解