08-绘制形状、文和 随机线

2024-03-23 01:40
文章标签 绘制 随机 08 形状 文和

本文主要是介绍08-绘制形状、文和 随机线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

08-绘制形状、文和 随机线:


#include<opencv2/opencv.hpp>;
#include<iostream>;
using namespace std;
using namespace cv;Mat source1, change1;  //全局变量
const char* source1Title = "source1title ";
const char* change1Title = "change1title ";
void MyLines();  //函数声明:绘制线段
void MyRectangle();//绘制矩形
void MyEllipse(); //绘制椭圆弧度
void MyCircle(); //绘制圆
void MyfillPoly(); //绘制多边形
void MyPutText();  //文字输出int main(int argc, char* srgv) { //08- 绘制形状与文字source1 = imread("F:\\OpenCV-Test\\TestPicture\\SourcePicture1\\1.PNG");if (source1.empty()) {printf("can not load image ... \n");return -1;}imshow(source1Title, source1);// API 绘制线,椭圆,矩形,圆,填充 ; 文字source1.copyTo(change1);MyLines();    //调用绘制线段函数MyRectangle();//调用绘制矩形函数MyEllipse();  //调用绘制椭圆函数MyCircle();   //调用绘制圆函数MyfillPoly();  //调用绘制多边形函数MyPutText();  //调用文字输出函数imshow(change1Title, change1);waitKey(0);return 0;
}
void MyLines() {  //绘制线段函数 Point p1 = Point(10, 20);  //线起点Point p2 = Point(50,80);   //线终点Scalar MyLinesColor = Scalar(0,0,255); //线红色line(change1,p1,p2,MyLinesColor,3,LINE_AA);  // 图像,起点,终点,颜色,线宽,线反锯齿(稍微耗CPU)
}
void MyRectangle() {  //绘制矩形函数 Rect rect = Rect(80,30,150,40); //起点坐标, 终点坐标Scalar rectColor = Scalar(255, 0, 0); //线蓝色颜色rectangle(change1,rect,rectColor,2,LINE_8);//图像,方法,颜色,线宽,线锯齿
}
void MyEllipse() { //绘制椭圆函数Scalar ellipseColor = Scalar(0, 255, 0); //线绿色ellipse(change1,Point(100,150),Size(20,40),45,0,360,ellipseColor,2,LINE_8);//图像,椭圆中心点,椭圆大小长短轴  椭圆倾斜度 0-360度(弧度0-360度之间) 椭圆颜色,椭圆线宽,反锯齿//ellipse(change1, Point(change1.rows/2, change1.cols/2), Size(change1.rows/4, change1.cols/8), 90, 0, 360, ellipseColor, LINE_8);
}
void MyCircle() {   //调用绘制圆函数Point CircleCenter = Point(50,200);//Point CircleCenter = Point(change1.rows / 2, change1.cols / 2);Scalar CircleColor = Scalar(0, 255, 255); //线颜色指定circle(change1,CircleCenter,40,CircleColor,2,8);// 图像,圆中心点,圆半径, 圆颜色,圆线宽,反锯齿
}
void MyfillPoly() { //绘制多边形函数Point pts[1][5]; //二维数组1*5pts[0][0] = Point(15, 15);  //数组点坐标pts[0][1] = Point(45, 150);pts[0][2] = Point(35, 90);pts[0][3] = Point(35, 45);pts[0][4] = Point(15, 15);const Point* ppts[] = { pts[0] }; //int npt[] = { 5 };Scalar FillPolyColor = Scalar(255,50,255);fillPoly(change1,ppts,npt,1, FillPolyColor,8);// 图像,起点坐标,终点坐标, 数组宽度为1(pts[1][5],颜色,反锯齿)
}
void MyPutText() {  //调用文字输出函数const char*  PutTexts = "Hello OpenCV !";Scalar TextputColor = Scalar(30, 30, 255);putText(change1,PutTexts,Point(50,250),FONT_HERSHEY_SIMPLEX,1,TextputColor,2,8);//图像,文字内容,坐标,字体类型,文字大小,文字颜色,字体宽度,反锯齿
}

演示效果:

 

绘制随机线代码:


#include<opencv2/opencv.hpp>;
#include<iostream>;
using namespace std;
using namespace cv;Mat source1;  //全局变量
const char* source1Title = "source1title ";void RandomLine();//绘制 随机线
int main(int argc, char* srgv) { //08- 绘制形状与文字source1 = imread("F:\\OpenCV-Test\\TestPicture\\SourcePicture1\\1.PNG");if (source1.empty()) {printf("can not load image ... \n");return -1;}imshow(source1Title, source1);RandomLine();//绘制随机线waitKey(0);return 0;
}
void RandomLine() { //绘制随机线RNG rng(12345);Point pt1;Point pt2;Mat bg = Mat::zeros(source1.size(),source1.type());for (int i = 0; i < 1000;i++) {pt1.x = rng.uniform(0, source1.cols);  // 随机数函数.uniformpt1.y = rng.uniform(0, source1.rows);pt2.x = rng.uniform(0, source1.cols);pt2.y = rng.uniform(0, source1.rows);Scalar FreeLineColor = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));if (waitKey(50)>0) {break;}line(bg, pt1, pt2, FreeLineColor, 1, 8);imshow("RandomLine", bg);}	
}

代码演示效果:

 

 

 

这篇关于08-绘制形状、文和 随机线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/836744

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm

AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理

AI学习指南深度学习篇——带动量的随机梯度下降法的基本原理 引言 在深度学习中,优化算法被广泛应用于训练神经网络模型。随机梯度下降法(SGD)是最常用的优化算法之一,但单独使用SGD在收敛速度和稳定性方面存在一些问题。为了应对这些挑战,动量法应运而生。本文将详细介绍动量法的原理,包括动量的概念、指数加权移动平均、参数更新等内容,最后通过实际示例展示动量如何帮助SGD在参数更新过程中平稳地前进。

08 增删查功能

划重点: lable 标签keyup:键盘事件标签内添加样式:style使用事件修饰符:preventforEach :遍历 数组indexOf: 可以返回要查询的某个字符串值在整个字符串中首次出现的位置下标findIndex:返回传入一个测试条件(函数)符合条件数组的首个元素的位置splice:向/从数组中添加/删除项目,然后返回被删除后的新的项目数组 黑椒蟹 一对: <!DOCTYPE

2021-08-14 react笔记-1 安装、环境搭建、创建项目

1、环境 1、安装nodejs 2.安装react脚手架工具 //  cnpm install -g create-react-app 全局安装 2、创建项目 create-react-app [项目名称] 3、运行项目 npm strat  //cd到项目文件夹    进入这个页面  代表运行成功  4、打包 npm run build

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户