【OpenCV • c++】基础图像的绘制

news2024/12/24 20:23:41

  • 🚀 个人简介:CSDN「博客新星」TOP 10 , C/C++ 领域新星创作者
  • 💟 作    者:锡兰_CC ❣️
  • 📝 专    栏:【OpenCV • c++】计算机视觉
  • 🌈 若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力💪💪💪

文章目录

    • 一、点
    • 二、直线
      • 参考代码
    • 三、椭圆
      • 参考代码
    • 四、矩形
      • 参考代码
    • 五、圆
      • 参考代码
    • 六、多边形
      • 参考代码

一、点

  在opencv中,通常使用Point类数据结构来表示二维坐标系下的点。下面演示定义一个x轴坐标为 10,y轴坐标为 8 的二维点。

	Point p;
	p.x = 10;
	p.y = 8;
	Point p = Point(10,8);

二、直线

  在opencv中,可以使用line()函数来绘画直线。

	void cv::line( InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int lineType = LINE_8,	int shift = 0)

  其中第一个参数表示目标图像,第二个参数表示线段的第一个点,第三个参数表示线段的第二个点,第四个参数表示线段颜色,第五个参数表示线的粗细,第六个参数表示线的类型,第七个参数表示点坐标中的小数位数。

参考代码

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main() {
	Mat Image = Mat::zeros(500, 500, CV_8UC3);
	Point p1 = Point(10, 10);
	Point p2 = Point(490, 490);
	Scalar color = Scalar(0, 255, 255);
	line(Image, p1, p2, color, 1, LINE_4);
	imshow("效果图", Image);
	waitKey(0);
	return 0;
}

在这里插入图片描述

三、椭圆

  在opencv中,可以使用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)

  其中第一个参数表示目标图片,第二个参数表示椭圆的中心,第三个参数表示椭圆主轴大小的一半,第四个参数表示以度为单位的椭圆旋转角度,第五个参数表示椭圆弧的起始角度,以度为单位,第六个参数表示椭圆弧的结束角度,以度为单位,第七个参数表示椭圆颜色,第八个参数表示椭圆弧轮廓的厚度,第九个参数表示椭圆边界的类型,第十个参数表示中心坐标和轴值中的小数位数。

参考代码

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main() {
	Mat Image = Mat::zeros(500, 500, CV_8UC3);
	RotatedRect rrt;
	rrt.center = Point(200, 200);
	rrt.size = Size(100, 200);
	rrt.angle = 90.0;
	Scalar color = Scalar(0, 255, 255);
	ellipse(Image, rrt, color, 2, 8);
	imshow("效果图", Image);
	waitKey(0);
	return 0;
}

在这里插入图片描述

四、矩形

  在opencv中,可以使用rectangle ()函数来绘画矩形。

void cv::rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0)

其中第一个参数表示目标图片,第二个参数表示矩形的顶点,第三个参数表示与第二个参数相对的矩形的顶点,第四个参数表示矩形颜色或亮度(灰度图像),第五个参数表示构成矩形的线条的粗细。负值,如FILLED,意味着该函数必须绘制一个填充的矩形,第六个参数表示线的类型,第七个参数表示点坐标中的小数位数。

参考代码

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main() {
	Mat Image = Mat::zeros(500, 500, CV_8UC3);
	Scalar color = Scalar(0, 255, 255);
	Rect rect;
	rect.x = 100;
	rect.y = 100;
	rect.width = 250;
	rect.height = 300;
	rectangle(Image, rect, color, -1, 8, 0);
	imshow("效果图", Image);
	waitKey(0);
	return 0;
}

在这里插入图片描述

五、圆

void cv::circle(InputOutputArray img, Point center, int radius, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0)

第一个参数表示目标图片,第二个参数表示圆的中心,第三个参数表示圆的半径,第四个参数表示圆的颜色,第五个参数表示圆形轮廓的粗细(如果为正)。负值,如FILLED,表示要绘制一个实心圆,第六个参数表示圆边界的类型,第七个参数表示中心坐标和半径值中的小数位数。

参考代码

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main() {
	Mat Image = Mat::zeros(500, 500, CV_8UC3);
	Scalar color = Scalar(0, 255, 255);
	circle(Image, Point(250, 250), 105, color, -1, LINE_AA, 0);
	imshow("效果图", Image);
	waitKey(0);
	return 0;
}

在这里插入图片描述

六、多边形

void cv::fillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar & color, int lineType = LINE_8, int shift = 0, Point offset = Point())

第一个参数表示目标图片,第二个参数表示多边形数组,其中每个多边形都表示为点数组,第三个参数表示多边形颜色,第四个参数表示多边形边界的类型,第五个参数表示顶点坐标中的小数位数,第六个参数表示轮廓所有点的可选偏移。

参考代码

#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main() {
	Mat Image = Mat::zeros(500, 500, CV_8UC3);
	Scalar color = Scalar(0, 255, 255);
	Point p1(100, 100);
	Point p2(350, 100);
	Point p3(450, 280);
	Point p4(320, 450);
	Point p5(100, 400);
	std::vector<Point> pts;
	pts.push_back(p1);
	pts.push_back(p2);
	pts.push_back(p3);
	pts.push_back(p4);
	pts.push_back(p5);
	fillPoly(Image, pts, color, 8, 0);
	imshow("效果图", Image);
	waitKey(0);
	return 0;
}

在这里插入图片描述
其他

更多专栏订阅:

  • 👍 【开卷数据结构】
  • 💛 【备战蓝桥,冲击省一】
  • 💕   从零开始的 c++ 之旅
  • 💖 【OpenCV • c++】计算机视觉

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

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

相关文章

element form表单触发校验

未操作情况下&#xff0c;表单触发校验&#xff0c;此时需要清除这一项 一定要在数据处理完后在进行清除校验&#xff0c;否则会不生效 this.form result;if (!this.form.item5List) {this.$nextTick(() > {this.$refs.form.clearValidate(item5List)})}

idea里发送简单邮件的模板

这是一个idea里发送简单邮件的模板&#xff0c;后续会更新在项目里如何进行运用。 带附件的暂时不演示。 这属于个小demo&#xff0c;后续还会抽出专门的properties进行存储对应的授权码邮箱等信息&#xff0c;也会封装一个发送邮件的方法&#xff0c;供其他的发送邮件业务调用…

空气净化器语音播放方案,低功耗NV400F语音芯片

随着科技的不断进步和人们对生活质量的要求不断提高&#xff0c;空气净化器也逐步进入人们的日常生活中。而随着人工智能技术的发展&#xff0c;越来越多的家电设备开始具备语音交互的功能&#xff0c;极大地方便了用户的使用体验。在实现空气净化器的语音播放功能上&#xff0…

MySQL数据库——高级查询语句

MySQL数据库——高级查询语句 一、数据库查询二、高效查询方式1.指定指字段进行查询——SELECT2.对字段进行去重查询——DISTINCT3.条件查询——where3.逻辑关系的增加查询——and 和 or4.已知值的数据记录查询——IN5.范围内数据记录查询——BETWEEN6.通配符查询7.关键字排序查…

redis源码调试---vscode使用技巧-----C语言跳转到函数定义

目录 1 安装插件2 对于C语言代码&#xff0c;linux安装bear3 bear make4 指定 路径&#xff0c;按住ctrl加左键单击就可以方便快捷的跳转到函数定义了5 C不需要像上面那样做 1 安装插件 C/Cv1.16.3 clangd 2 对于C语言代码&#xff0c;linux安装bear sudo apt install bear…

MIT 6.830数据库系统 -- lab two

MIT 6.830数据库系统 -- lab two 项目拉取Lab Two实现提示练习一 -- Filter and Join练习二 -- Aggregates练习三 -- HeapFile Mutability练习四 -- Insertion & deletion练习五 -- Page eviction练习六 -- Query walkthrough练习七 - 查询解析 项目拉取 原项目使用ant进行…

ES基本操作(JavaAPI篇)

引入jar包依赖 <dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!-- es客户端 --><dependency><groupI…

ueditor 百度富文本编辑器后端配置(上传图片)

在前端已经写好的情况下进行以下操作 1&#xff0c;在public/assets/addons/ueditor内新建 config.json并加入以下代码 {"imageActionName": "uploadimage","imageFieldName": "upfile","imageMaxSize": 2048000,"im…

LabVIEW开发基于直流电机的高精度定位火星车

LabVIEW开发基于直流电机的高精度定位火星车 火星探测器一直用于火星探测的自动无人驾驶车辆。这些机器人远程车辆用于避免对人类不公平的条件&#xff0c;并减少与之相关的危险。这一研究领域引起了许多科学家和研究人员的注意&#xff0c;这导致了这一技术领域的显着进步。已…

MySQL-SQL InnoDB引擎 (中)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

23款奔驰S400豪华型升级裸眼3D仪表盘,体验高配乐趣

3D驾驶员显示屏能帮助您密切留意该显示屏中的重要信息。驾驶辅助系统的警告图标和功能图标都有醒目的3D效果&#xff0c;能够立即引起驾驶员的注意。不仅如此&#xff0c;显示屏还能以出色的 3D 影像来显示车辆前方的汽车、卡车、客车和摩托车等车辆。

Unity 遮挡剔除

渲染时 摄像机视锥体会裁切一部分 其实还可以遮挡剔除 首先要设置下 阻挡别人的 被阻挡的 设置好以后 点一下bake 摄像机记得要设置这个 Occlusion Culling 右下第一个选项 Camera Volumes 相机进入这个范围内 才会触发 遮挡剔除 勾选上 就可以看到 剔除的效果 也就是说 …

Mysql批量插入1000条数据

使用mysql的存储过程 1.现有如下一张表&#xff1a;site_row 2.创建存储过程 CREATE PROCEDURE p01 () BEGIN declare i int; set i1;while i<1000 doINSERT INTO site_row(row_id,row_num) VALUES ( i,i);set ii1; end WHILE;END; 3.执行存储过程 CALL p01(); 4.查看效…

6.2.3 取得路径的文件名称与目录名称

每个文件的完整文件名包含了前面的目录与最终的文件名&#xff0c;而每个文件名的长度都可以到达255 个字符。取得文件名或者是目录名称&#xff0c;一般的用途应该是在写程序的时候用来判断之用。所以&#xff0c;这部分的指令可以用在第三篇内的 shell scripts 里头。 6.3 文…

关于后台管理系统的学习:主界面

关于管理系统的主界面布局基本上都是下面这个格式&#xff1a; 系统中展示的所有内容都是基于这个文件(index.vue)的&#xff0c;通常会将主页面进行组件的拆分&#xff0c;比如&#xff1a; <template><div><!-- 模块区 --><layout-header v-if"m…

蓝桥杯专题-试题版-【危险系数】【网络寻路】【高僧斗法】【约数倍数选卡片】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

【Java高级编程】IO流

IO流 1、File类的使用1.1、File类的理解1.2、File的实例化1.3、常用方法 2、IO原理及流的分类2.1、流的分类2.2、流的体系结构2.3、输入、输出的标准化过程 3、节点流&#xff08;或文件流&#xff09;3.1、FileReader的使用3.2、FileWriter的使用3.3、文本文件的复制3.4、File…

Vue3学习(一)创建项目集成ElementPlus

一、创建vue项目 软件安装&#xff1a;nodejs16 https://nodejs.org/download/release/v16.20.0/ 将npm设置为淘宝镜像&#xff1a; npm config set registry https://registry.npm.taobao.org 开始创建vue3项目 npm init vuelatest npm install npm run dev Eleement-Plus …

【python】dlib人脸识别初步

文章目录 安装与初步使用HOG算法人脸识别CNN人脸识别CNN车辆识别 安装与初步使用 dlib也是从C转过来的Python模块&#xff0c;正常安装非常痛苦&#xff0c;需要下载cmake还有boost&#xff0c;所以这里推荐用conda来安装&#xff0c;一行代码轻松搞定 conda install -c cond…

Rust简介

Rust简介 为什么要用Rust与其他语言比较Rust 特别擅长的领域Rust 与 FireFoxRust 的用户和案例![在这里插入图片描述](https://img-blog.csdnimg.cn/b1e0a39c53ba45d1a3c93d0dd73408fe.png)Rust 优缺点 ref: https://www.bilibili.com/video/BV1hp4y1k7SV 为什么要用Rust 与其…