【OpenCV】图形绘制与填充

        介绍了绘制、填充图像的API。也介绍了RNG类用来生成随机数。相关API:

  • line()

  • rectangle()

  • circle()

  • ellipse()

  • putText()

代码:

#include "iostream"
#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;int main(int argc, char *argv)
{//【画布(图片)、窗口创建】Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);namedWindow("canvas", WINDOW_AUTOSIZE);//【相关绘制API]】//线段line(canvas, Point(10, 10), Point(400, 400), Scalar(0, 255, 255), 1, LINE_8);	//API(画布,点,点,色彩,线粗,渲染方式),渲染方式是枚举值,LINE_AA可以实现抗锯齿效果。//矩形Rect rect(100, 100, 200, 200);	//(起始点位置,宽高)宽高不可为负值rectangle(canvas, rect, Scalar(255, 0, 0), 1, LINE_8);	//API//圆形circle(canvas, Point(256, 256), 100, Scalar(0, 255, 0), 1, 8);	//API(画布,圆心,半径,色彩,线粗,渲染方式)//椭圆RotatedRect rrt;	//通过这个对象设置一些矩形数据rrt.center = Point2f(256, 256);	//椭圆中心rrt.angle = 45;	//旋转角度,可以为负值,反向旋转rrt.size = Size(100, 200);	//椭圆尺幅,可以理解为把椭圆圈起来的矩形的大小ellipse(canvas, rrt, Scalar(0, 255, 255), -1, 8);	//API(画布,RotatedRect对象,色彩,线粗,渲染方式),线粗参数设置-1图形变填充。//文字putText(canvas, "hello,world", Point(100, 50), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(0, 255, 0), 2, 8);	//API(画布,文字,起始点,字体,大小,色彩,粗细,渲染方式)imshow("canvas", canvas);//【随机绘制】/*Mat image = Mat::zeros(Size(512, 512), CV_8UC3);Rect rect1;	int x1 = 0, y1 = 0;int x2 = 0, y2 = 0;RNG rng(12345);	//随机数,参数是设置的种子。while (true){//把image转变为纯黑图,相当于每次绘制前清空image图片。可以去掉注释运行看看效果。//image = Scalar(0, 0, 0);//两个点的x,y取随机值x1 = rng.uniform(0, 512);//0~511的范围随机,[0,512)y1 = rng.uniform(0, 512);x2 = rng.uniform(0, 512);y2 = rng.uniform(0, 512);//取两点间宽高int w = abs(x2 - x1);	//取绝对值int h = abs(y2 - y1);//画线line(image, Point(x1, y1), Point(x2, y2), Scalar(rng.uniform(0, 256), rng.uniform(0, 256), rng.uniform(0, 256)), 1, LINE_8);//画矩形rect1.x = x1;rect1.y = y1;rect1.width = w;rect1.height = h;rectangle(image, rect1, Scalar(255, 0, 0), 1, LINE_8);imshow("image", image);//按下任意键(英文输入法)退出循环,停止随机绘制if (waitKey(10) >= 0){break;}}*/waitKey(0);destroyAllWindows();return 0;
}

除了几个API的使用要了解,还要了解这段代码中用到的各种类对象相关内容。

  • Rect

  • RotatedRect

  • RNG

  • .uniform(),[x,y)

这里分别用于了矩阵,椭圆的绘制,以及获取随机数。

演示:

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

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

相关文章

ARM64的KASLR分析

基本概念 加载地址:内核解压到物理内存上的物理起始地址 链接地址:内核编译链接后的虚拟起始地址 我们的这篇 文章,介绍了加载地址可以是自动的,也可以是固定的;一般都是物理内存的起始地址 一个偏移 ;…

pillow学习3

Pillow库中,图像的模式代表了图像的颜色空间。以下是一些常见的图像模式及其含义: L(灰度图):L模式表示图像是灰度图像,每个像素用8位表示(范围为0-255),0表示黑色&#…

在flutter initState 方法,触发 setState导致循环执行

在Flutter中,如果你在initState中调用了一个方法,并且这个方法可能导致状态更新,这可能会引起无限循环,因为每次状态更新都会再次调用initState。 为了避免这种情况,你应该检查调用的方法是否会导致状态更新&#xff…

图算法新书发布会圆满成功,大咖现场都讲了啥?

5月24日,嬴图与机工社携手举办的“《图算法:行业应用与实践》新书发布会”圆满成功。 现场直播在线观众达4000人/次左右,点赞数量超7000,直至发布会尾声,观看人数仍在持续增长。 通过观众们的反馈,我们也对…

Matplotlib 实践指南:图形样式、风格与标记探索

目录 前言 第一点:导入模块 第二点:创建二维图 第三点:创建统计图 总结 前言 Matplotlib 是一个强大的数据可视化库,可用于创建各种类型的图形。在本文中,我们将研究如何在 Matplotlib 中设置图形的颜色、风格和标记…

【LeetCode算法】第88题:合并两个有序数组

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路:首次想到的解法:定义一个mn长度的辅助数组,从头遍历这两个数组,谁小就放进辅助数组中并且对应往后走,最后使用memcpy函…

巧用java8的stream流的.collect(Collectors.toMap(arg1,arg2))

最近公司接手了一个低代码二次开发平台的需求,需要连接多张表的数据然后展示到界面上。 按照java的sql思路,我们直接通过left join去关联表就行了,但是该低代码平台有对sql连表查询有限制,就是有些表它是存在一个domainKey的&…

HotSpot虚拟机的几个实现细节

文章目录 STW安全点安全区域记忆集与卡表读写屏障 STW 收集器在根节点枚举这步都是必须要暂停用户线程的( STW ),如果不这样的话在根节点枚举的过程中由于引用关系在不断变化,分析的结果就不准确 安全点 收集器在工作的时候某些…

切勿安装这五款流氓软件,你中招了没

流氓软件,又称为恶意软件,是一类设计用来损害用户设备、窃取信息或干扰正常使用的程序。以下是五款臭名昭著的流氓软件介绍,提醒切勿安装,只能说一个比一个毒,你中招了没 可以去去虚拟机试试谁的毒更强一些&#xff0…

高工咨询:《2024中国人形机器人产业发展蓝皮书》

高工咨询所发布的《2024中国人形机器人产业发展蓝皮书》全面梳理了人形机器人产业的发展现状、政策环境、资本市场、技术发展、市场前景以及面临的机遇与挑战等情况。 人形机器人是当今世界科技领域最具潜力和前景的产业之一。随着科技的不断进步和人 工智能技术的快速发展&…

基于jeecgboot-vue3的Flowable增加表单功能(二)

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 接上一节 6、增加一个types.ts 类型 export interface FormForm {id: number | string | undefined;formName: string;formContent?: string;remark: string; } 7、api增加一个getForm…

Github Page 部署失败

添加 .gitmodules 文件 [submodule "themes/ayer"]path themes/ayerurl https://github.com/Shen-Yu/hexo-theme-ayer.git 添加 .nojekyll 文件

React Fiber

React引入Fiber前后的区别: 渲染流程的控制: 之前:在Fiber之前,React的渲染过程是一个相对线性的深度优先遍历过程,从根节点开始遍历整个组件树,这个过程一旦开始就无法中断,直到完成。如果遇到…

滚珠花键在工业自动化领域中有什么优势?

滚珠花键是工业自动化设备中重要的传动系统之一,不仅在工业自动化系统中有着广泛的运用,还在机械制造领域、航空航天领域、工业汽车领域、工业机器人、高速铁路、新能源领域 等都得到广泛应用。由于具有高精度、高承载、耐磨损、传递扭矩大等特点&#x…

android 关于自定义View在特殊情况下触发setPressed方法(View源码解析)

文章目录 前言一、为什么样式会变?二、调试发现原因并解决1.找到原因2.解决 总结 前言 最近在负责一些UI相关的工作,测试给到一个UI的bug,说是搜索框在点击的时候,旁边的’‘X’变成按压的效果了,我转手就把bug转给负责公控的同事了,因为这个搜索框是公控同事提供的…

Mysql常用操作DDL数据库、表操作:

SQl DDl-数据库操作 查询 查询所有数据库 show databases; 查询当前数据库 select database(); 创建 create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则]; 删除 drop database[if exists] 数据库名; 使用 use 数据库名;…

K8s集群中的Pod调度约束亲和性与反亲和性

前言 在 K8s 集群管理中,Pod 的调度约束——亲和性(Affinity)与反亲和性(Anti-Affinity)这两种机制允许管理员精细控制 Pod 在集群内的分布方式,以适应多样化的业务需求和运维策略。本篇将介绍 K8s 集群中…

运维开发详解:现代IT环境的核心角色

随着信息技术的快速发展和互联网应用的广泛普及,运维开发(DevOps)在现代IT环境中扮演着越来越重要的角色。本文将详细探讨运维开发的概念、历史背景、关键实践、工具和未来趋势,旨在为读者提供全面的理解。 什么是运维开发&#…

labview类编程

1.父类的功能是通用功能,所有子类都含有父类的功能,重写会自动执行一次父类的功能。 2.每个子类都用了父类的注册vi,所以在调用的时候,出来的就是子类注册的vi,也就是window.vi。 3.假如要设计一个父类的vi,首先是保存…

手持高速暴力风扇方案32位单片机

RAMSUN一款低成本的暴力无刷风扇方案,集成无刷电机驱动、电池低压保护等功能的同时,保持较低的待机功耗。 手持高速暴力风扇主控芯片MM32SPIN080C高性能的单电机控制 SOC 产品,集成了运动控制所需的专用模拟外设。包括 12 位高精度 ADC、2 路模拟比较器…