OpenCV示例学习(二): 基本图形绘制算子:line(),circle(),fillPoly(), ellipse()

OpenCV示例学习(二): 基本图形绘制算子:line(),circle(),fillPoly(), ellipse()

#include <opencv2/opencv.hpp>using namespace cv;#define WINDOW_NAME1 "【绘制图1】"        //为窗口标题定义的宏
#define WINDOW_NAME2 "【绘制图2】"        //为窗口标题定义的宏
#define WINDOW_WIDTH 600                 //定义窗口大小的宏void DrawEllipse(Mat img, double angle);//绘制椭圆
void DrawFilledCircle(Mat img, Point center);//绘制圆
void DrawPolygon(Mat img);//绘制多边形
void DrawLine(Mat img, Point start, Point end);//绘制线段int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建空白的Mat图像Mat atomImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);//一、绘制化学中的原子示例图// 1、先绘制出椭圆DrawEllipse(atomImage, 90);DrawEllipse(atomImage, 0);DrawEllipse(atomImage, 45);DrawEllipse(atomImage, -45);// 2、再绘制圆心DrawFilledCircle(atomImage, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2));//二、绘制组合图//1、先绘制出椭圆DrawPolygon(rookImage);//2、绘制矩形rectangle(rookImage,Point(0, 7 * WINDOW_WIDTH / 8),Point(WINDOW_WIDTH, WINDOW_WIDTH),Scalar(0, 255, 255),-1,8);//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);
}

2)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);									// 线性 (连通性)
}

3)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);
}

4)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 / 4, 13 * WINDOW_WIDTH / 16);const Point *ppt[1] = { rookPoints[0] }; //	一个元素的 point 指针数组:每个元素表示指向一个point结构类型的存储地址//const Point** ppt = &(rookPoints[0]);//int npt[] = { 20 };int ival = 20;int *npt = &ival;fillPoly(img,&ppt[0],			// 多边形顶点集合npt,				// 多边形顶点数目1,Scalar(255, 255, 255),lineType);
}

5)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);
}

结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动荡的 2019:数据和 AI 生态圈

来源&#xff1a;云头条这是数据领域又一个激烈动荡的年头&#xff0c;令人兴奋&#xff0c;但又错综复杂。随着越来越多的人上网&#xff0c;一切继续在加快“数据化”的步伐。这个大趋势的发展势头越来越猛&#xff0c;归因于基础设施、云计算、AI和开源各个领域取得的进步的…

无线通信界的3大天王,谁能驾驭百亿台IoT设备?

来源&#xff1a;物联网智库导 读数量爆发式增长的背后&#xff0c;Wi-Fi、蓝牙、Zigbee三大无线连接技术正上演一场“争霸赛”。本文通过对三项技术的详细对比&#xff0c;以分析三项技术在具体应用场景中的优劣势。根据前瞻产业研究院发布的《2018—2023年中国物联网行业细分…

腾讯张正友:计算机视觉的三生三世

本文转载自&#xff1a;腾讯AI实验室本文将介绍腾讯 AI Lab & Robotics X 主任张正友博士在 CCF-GAIR 2019 大会上所做的报告&#xff0c;讲述计算机视觉研究的历史和未来。7 月 12 日-7 月 14 日&#xff0c;2019 第四届全球人工智能与机器人峰会&#xff08;CCF-GAIR 201…

未来50亿年科学预测

来源&#xff1a;宇宙解码近期未来史现今——公元2500年公元2020年 三维全息电视将进入生活&#xff0c;人们可以通过付费点播观看。公元2025年 氢燃料电池技术将给交通运输领域带来革命&#xff0c;氢燃料电池汽车将开始中批量生产。餐桌上会出现具有肉类营养特征的植物。培养…

OpenCV学习笔记(二):3种常用访问图像中像素的方式

OpenCV学习笔记&#xff08;二&#xff09;&#xff1a;3种常用访问图像中像素的方式 #include <opencv2/opencv.hpp>using namespace cv; using namespace std;int main() {//【1】创建原始图并显示Mat srcImage imread("F:/C/2. OPENCV 3.1.0/TEST/11.jpg"…

水题 UVA 1586 - Ancient Cipher化学式分子量计算

原题见&#xff1a;http://acm.hust.edu.cn/vjudge/contest/view.action?cid106424#overview 题目要求&#xff0c;根据所给化学量与原子量计算化学式的相对分子质量。。。其实就是怎么对应起来的事。 代码如下&#xff1a; 1 #include <stdio.h>2 //给出一种物质的分子…

【边缘计算】边缘计算元年一文看懂云边协同!九大场景带来新一轮信息革命...

来源&#xff1a;产业智能官2019 年边缘计算备受产业关注&#xff0c;一度引起了资本市场的投资热潮&#xff0c;很多人把 2019 年称作边缘计算的元年。理性来看&#xff0c;造成如此火爆局势难免有一些炒作因素在推波助澜&#xff0c;毕竟边缘计算的概念存世也已多年。当然&am…

OpenCV学习笔记(三):多通道图像分离、混合算子:split(),merge()

OpenCV学习笔记&#xff08;三&#xff09;&#xff1a;多通道图像分离、混合算子&#xff1a;split(),merge() #include <opencv2/opencv.hpp>#define BRG_BLUE_CHANNEL 0 #define BRG_GREEN_CHANNEL 1 #define BRG_RED_CHANNEL 2using namespace cv;int main(int argc…

pytorch两种常用的学习率衰减方法

阶梯式衰减 torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma0.1, last_epoch-1) 每个训练step_size个epoch&#xff0c;lr会自动乘以gamma LR 0.01 optimizer Adam(model.parameters(),lr LR) scheduler torch.optim.lr_scheduler.StepLR(optimizer,step_s…

[转]retina屏下支持0.5px边框的情况

2014-12-31更新&#xff1a;截至到IOS8.1&#xff0c;safari仍不支持supports待safari支持supports, 就可以利用0.5px了&#xff01; 2014-7-25更新&#xff1a;1. 修正dpr 1.5 机器下四角边框的缩放比例&#xff1b;2. 修正右边框&#xff08;rBor&#xff09;的transform-or…

心理所发表关于神经科学研究可信度的评论文章

来源&#xff1a;文章来源&#xff1a;心理研究所 作为人类特有的行为&#xff0c;科学研究是社会文明的重要推动力量之一。近年来&#xff0c;研究的可重复性问题成为科学关注的焦点&#xff0c;从心理科学到临床医学等领域&#xff0c;研究的可重复性成为巨大挑战。生命科学研…

OpenCV学习笔记(三):图像对比度、亮度调整源码

OpenCV学习笔记&#xff08;三&#xff09;&#xff1a;图像对比度、亮度调整源码 主函数&#xff1a; #include <opencv2/opencv.hpp>using namespace cv;using namespace std;int g_nContrastValue80; //对比度值int g_nBrightValue80; //亮度值Mat g_srcImage, g_ds…

MATLAB xlswrite函数出现“错误: 服务器出现意外情况”

打开Excel&#xff0c;点击文件→选项→加载项&#xff0c;选择COM加载项 点击转到&#xff0c;将福昕阅读器前面的√去掉即可

神秘的中国超算:比肩高铁的世界级领先

来源&#xff1a;21Tech2019年4月&#xff0c;一张类似燃烧中蜂窝煤的照片传遍全世界——这是人类历史上首次得见“黑洞”的真容。实际上&#xff0c;关于黑洞的照片早在2017年4月历经十余天已拍摄完毕&#xff0c;此后&#xff0c;便是将来自全球8架射电望远镜收集到的数据进行…

OpenCV示例学习(七):离散傅里变换(DFT)算子:getOptimalDFTSize(),copyMakeBorder(),magnitude(),log(),normalize()

OpenCV示例学习&#xff08;七&#xff09;&#xff1a;离散傅里变换&#xff08;DFT&#xff09;算子&#xff1a;getOptimalDFTSize(),copyMakeBorder(),magnitude(),log(),normalize() #include <opencv2/opencv.hpp>using namespace cv;int main(int argc, char *ar…

OpenCV学习笔记(四):XML,YAML(.txt,.doc)文件读写操作

OpenCV学习笔记&#xff08;四&#xff09;&#xff1a;XML,YAML(.txt,.doc)文件读写操作 一、Write_XML_and_YAML_File&#xff08;写入XML&#xff09; #include <opencv2/opencv.hpp> #include <time.h>using namespace cv;int main() {// 1、准备文件写操作F…

“用手机就能访问卫星” 软件定义升级卫星智能

▲“天智一号”是全球首颗实际开展工程研制并发射的软件定义卫星。软件所供图来源&#xff1a; 中国科学报▲专家学者探讨开源、开放的航天生态环境。沈春蕾摄“假设未来30年将发射10万颗&#xff0c;这些卫星该怎么造、怎么算、怎么用&#xff1f;”在日前召开的2019软件定义卫…

python的print函数输出带颜色字体

格式&#xff1a;print(\033[显示方式&#xff1b;前景色&#xff1b;背景色m 需要显示的文字 \033[0m) 其中"\033[显示方式&#xff1b;前景色&#xff1b;背景色m"是开头部分&#xff0c;"\033[0m"是结尾部分 说明&#xff1a; 开头部分有三个参数&…

OpenCV学习笔记(五):线性滤波-方框、均值、高斯:boxFilter(),blur(),GaussianBlur()

OpenCV学习笔记&#xff08;五&#xff09;&#xff1a;线性滤波-方框、均值、高斯&#xff1a;boxFilter(),blur(),GaussianBlur() 线性滤波&#xff1a;即多个信号之和的响应和它们各自响应之和相等。 参考&#xff1a; https://blog.csdn.net/poem_qianmo/article/details/…

NB-IoT与LoRa,两马领跑物联网竞赛,谁将最终胜出?

来源&#xff1a;电子工程专辑HS Markit报告指出&#xff0c;曾经广泛开放的LPWAN市场领域开始明显紧缩&#xff0c;不过仍处于初期发展阶段。2018年只有1.5亿个LPWAN链路被布署&#xff0c;到2023年NB-IoT与LoRa可望占据所有LPWAN链路的86%......根据市场研究机构IHS Markit发…