typedef Point_<int> Point2i; typedef Point2i Point; typedef Point_<float> Point2f123
Scalar 表示具有4个元素的数组,Scalar(a, b, c):c 红色,b绿色,c蓝色
typedef Size_<int> Size2i typedef Size2i Size; Size_(_Tp _width, _Tp _height);123
Rect成员变量由x,y,width,height分别为左上角点的坐标和矩形的宽和高。
Size() 返回Sizearea() 返回矩形的面积contains(Point)判断点在矩形内inside(Rect)判断矩形是否在矩形内tl()返回左上角点坐标br()返回右下角坐标两个矩形的交集和并集 Rect rect = rect1 & rect2;opencv3版
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; #define WINDOW_NAME1 "【绘制图1】" // 定义窗口的名字 #define WINDOW_NAME2 "【绘制图2】" #define WINDOW_WIDTH 600 // 定义窗口的大小 //-----------------------【DrawEllipse()函数】------------------ // 描述:自定义的绘制函数,实现了绘制不同角度,和相同尺寸的椭圆; //------------------------------------------------------------- void DrawEllipse(Mat img, double angle) { int thickness = 2; int lineType = 8; ellipse(img, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),Size(WINDOW_WIDTH/4,WINDOW_WIDTH/16),angle,0,360,Scalar(255,129,0),thickness,lineType); } //---------------------------【DrawFilledCircle()函数】---------------------------- // 描述:自定义的绘制函数,实现了实心圆的绘制 //-------------------------------------------------------------------------------- void DrawFilledCircle(Mat img, Point center) { int thickness = -1; int lineType = 8; circle(img, center, WINDOW_WIDTH / 32, Scalar(0, 0, 255), thickness, lineType); } //----------------------------------------【DrawPolygon()函数】---------------------- // 描述:自定义的绘制函数,实现了凹多边形的绘制 //--------------------------------------------------------------------------------- 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 / 16, 13 * WINDOW_WIDTH / 16); const Point * ppt[1] = { rookPoints[0] }; int npt[] = { 20 }; fillPoly(img, ppt, npt, 1, Scalar(255, 255, 255), lineType); } //--------------------------------------【DrawLine()函数】------------------------- // 描述:自定义的绘制函数,实现了线的绘制 //-------------------------------------------------------------------------------- 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() { // 创建一个白色的Mat图像 Mat atomImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3); Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3); //----------------------------绘制化学中原子的示例图---------------------- //【1.1】绘制椭圆 DrawEllipse(atomImage, 90); DrawEllipse(atomImage, 0); DrawEllipse(atomImage, 45); DrawEllipse(atomImage, -45); //【1.2】绘制圆心 DrawFilledCircle(atomImage, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2)); //---------------------------绘制组合图---------------------------------- //【2.1】 先绘制处椭圆 DrawPolygon(rookImage); //【2.2】绘制矩形 rectangle(rookImage, Point(0, 7 * WINDOW_WIDTH/8) ,Point(WINDOW_WIDTH, WINDOW_WIDTH), Scalar(0, 255, 255), -1,8); //【2.3】绘制一些线段 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)); //------------------------------------------显示绘制出的图像----------------------------------------- imshow(WINDOW_NAME1, atomImage); moveWindow(WINDOW_NAME1, 0, 200); imshow(WINDOW_NAME2, rookImage); moveWindow(WINDOW_NAME2, WINDOW_WIDTH, 200); waitKey(0); return 0; }
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798相关知识
植物绘图的基本方法和要求
Android数据结构与算法之一 基础简介
数据结构
浅谈Python数据结构(三)
重读《学习JavaScript数据结构与算法
电商设计新趋势,学生必备技能,掌握绘图技巧提升视觉效果
Opencv3笔记28——直方图对比
浅谈药用植物生物绘图方法
神经网络绘图软件推荐合集
MySQL优化笔记(三)
网址: Opencv3笔记4——数据结构与基本绘图 https://m.huajiangbk.com/newsview1101590.html
上一篇: eigen求解线性方程组 Ax |
下一篇: 填数游戏(??×???=???? |