【OpenCV】绘制简单图形
来源:互联网 发布:保险资产管理公司 知乎 编辑:程序博客网 时间:2024/05/16 14:14
线条、椭圆、矩形、圆、多边形
线条line()void cv::line ( InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0 ) 椭圆ellipse() void cv::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 ) 矩形rectangle() void cv::rectangle ( InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0 ) 圆circle()void cv::circle ( InputOutputArray img, Point center, int radius, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0 ) 多边形fillPoly()void cv::fillPoly ( Mat & img, const Point ** pts, const int * npts, int ncontours, const Scalar & color, int lineType = LINE_8, int shift = 0, Point offset = Point() )
代码示例
#include <opencv2/core.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/highgui.hpp>#define w 400using namespace cv;void MyEllipse(Mat img, double angle);void MyFilledCircle(Mat img, Point center);void MyPolygon(Mat img);void MyRect(Mat img);void MyLine(Mat img, Point start, Point end);int main(void){ Mat atom_image = Mat::zeros(w, w, CV_8UC3); Mat rook_image = Mat::zeros(w, w, CV_8UC3); MyEllipse(atom_image, 90); // 椭圆 MyEllipse(atom_image, 0); MyEllipse(atom_image, 45); MyEllipse(atom_image, -45); MyFilledCircle(atom_image, Point(w / 2, w / 2)); // 圆 MyPolygon(rook_image); // 多边形 MyRect(rook_image); // 矩形 MyLine(rook_image, Point(0, 15 * w / 16), Point(w, 15 * w / 16)); // 线条 MyLine(rook_image, Point(w / 4, 7 * w / 8), Point(w / 4, w)); MyLine(rook_image, Point(w / 2, 7 * w / 8), Point(w / 2, w)); MyLine(rook_image, Point(3 * w / 4, 7 * w / 8), Point(3 * w / 4, w)); char atom_window[] = "Drawing 1:Atom"; char rook_window[] = "Drawing 2:Rook"; imshow(atom_window, atom_image); moveWindow(atom_window, 0, 200); imshow(rook_window, rook_image); moveWindow(rook_window, w, 200); waitKey(0); return(0);}void MyEllipse(Mat img, double angle){ int thickness = 2; int lineType = 8; ellipse(img, Point(w / 2, w / 2), Size(w / 4, w / 16), angle, 0, 360, Scalar(255, 0, 0), thickness, lineType);}void MyFilledCircle(Mat img, Point center){ circle(img, center, w / 32, Scalar(0, 0, 255), FILLED, LINE_8);}void MyPolygon(Mat img){ int lineType = LINE_8; Point rook_points[1][20]; rook_points[0][0] = Point(w / 4, 7 * w / 8); rook_points[0][1] = Point(3 * w / 4, 7 * w / 8); rook_points[0][2] = Point(3 * w / 4, 13 * w / 16); rook_points[0][3] = Point(11 * w / 16, 13 * w / 16); rook_points[0][4] = Point(19 * w / 32, 3 * w / 8); rook_points[0][5] = Point(3 * w / 4, 3 * w / 8); rook_points[0][6] = Point(3 * w / 4, w / 8); rook_points[0][7] = Point(26 * w / 40, w / 8); rook_points[0][8] = Point(26 * w / 40, w / 4); rook_points[0][9] = Point(22 * w / 40, w / 4); rook_points[0][10] = Point(22 * w / 40, w / 8); rook_points[0][11] = Point(18 * w / 40, w / 8); rook_points[0][12] = Point(18 * w / 40, w / 4); rook_points[0][13] = Point(14 * w / 40, w / 4); rook_points[0][14] = Point(14 * w / 40, w / 8); rook_points[0][15] = Point(w / 4, w / 8); rook_points[0][16] = Point(w / 4, 3 * w / 8); rook_points[0][17] = Point(13 * w / 32, 3 * w / 8); rook_points[0][18] = Point(5 * w / 16, 13 * w / 16); rook_points[0][19] = Point(w / 4, 13 * w / 16); const Point* ppt[1] = { rook_points[0] }; int npt[] = { 20 }; fillPoly(img, ppt, npt, 1, Scalar(255, 255, 255), lineType);}void MyRect(Mat img){ rectangle(img, Point(0, 7 * w / 8), Point(w, w), Scalar(0, 255, 255), FILLED, LINE_8);}void MyLine(Mat img, Point start, Point end){ int thickness = 2; int lineType = LINE_8; line(img, start, end, Scalar(0, 0, 0), thickness, lineType);}
运行结果
阅读全文
0 0
- 【OpenCV】绘制简单图形
- python opencv 绘制简单图形
- MAC IOS 用openCV 绘制简单图形
- opencv 绘制半透明图形
- opencv 绘制半透明图形 (
- opencv:基本图形绘制
- opencv-python绘制图形
- opengl 绘制简单图形
- 图形简单绘制擦除
- Android 简单图形绘制
- OpenGL绘制简单图形
- Android绘制简单图形
- 简单绘制图形
- OpenGL简单图形绘制
- 简单图形绘制
- OpenGL---绘制简单图形
- CSS绘制简单图形
- svg绘制简单图形
- 并发编程(9)-同步类容器和并发类容器
- 网络编程之Socket通信(Java)进阶版
- Leetcode算法学习日志-173 Binary Search Tree Iterator
- 数据进制(二进制、十进制、十六进制)的转换详解
- 数据进制(二进制、十进制、十六进制)的转换详解
- 【OpenCV】绘制简单图形
- 项目的热部署-不重启Tomcat就可以部署项目
- 架构思想
- 【loli的胡策】联校11.4(贪心)
- 浅谈集合
- hiho 1619 “共同富裕” [Offer收割]编程练习赛34 Problem A 数学
- elasticsearch 5.4 head 安装
- python3 urlopen打开包含中文的url
- 数据仓库之数据及预处理