十四、图像几何形状绘制

项目功能实现:矩形、圆形、椭圆等几何形状绘制,并与原图进行相应比例融合
按照之前的博文结构来,这里就不在赘述了

一、头文件

drawing.h

#pragma once#include<opencv2/opencv.hpp>using namespace cv;class DRAWING {
public:void drawing(Mat& image);
};#pragma once

二、函数实现

drawing.cpp

Mat backgrand, result;
定义一个画布背景backgrand和进行融合之后的结果result
backgrand = Mat::zeros(image.size(), image.type());
背景图片的大小和原图一致,不过是全0的黑色背景

矩形绘制
Rect rect;
rect.x = 100;rect.y = 150;rect.width = 200;rect.height = 100;
rectangle(backgrand, rect, Scalar(255, 0, 0), -1, 8, 0);
参数一:处理的图片对象为backgrand
参数二:矩形的相关起始点以及宽高参数信息
参数三:颜色设置
参数四:-1表示填充,其余的正整数表示线条的宽度,数越大线条越宽
参数五:8这里代表LINE_8,其他参数还有LINE_4(可用4表示)、LINE_AA((可用16表示))
每个像素点都是浮点数,连线的时候会产生锯齿,通过相邻8个像素点进行消除锯齿
定义矩形的起始位置(x,y),以及矩形的高(y)和宽(x)
参数六:表示偏移量类似微调的效果,默认0即可

圆形绘制
circle(backgrand, Point(150, 150), 15, Scalar(0, 255, 0 ), 1);
参数一:处理的图片对象为backgrand
参数二:圆心位置
参数三:半径
参数四:颜色设置
参数五:线条宽度,-1表示填充,其他正整数表示线条粗细

线条绘制
line(backgrand, Point(100, 100), Point(200, 200), Scalar(255, 255, 255), 4, LINE_8, 0);
参数一:处理的图片对象为backgrand
参数二:起始位置
参数三:结束位置
参数四:颜色设置
参数五:线条宽度
参数六:和上面类似,LINE_8也可通过数字8进行替代
参数七:微调,偏移量,默认0即可

椭圆绘制
RotatedRect rrt;
rrt.center = Point(200, 200);rrt.size = Size(120, 90);rrt.angle = 90.0;
ellipse(backgrand, rrt, Scalar(0, 255, 255), 2, LINE_AA);
参数一:处理的图片对象为backgrand
参数二:椭圆绘制的相关参数信息,包括椭圆中心位置、角度等
参数三:颜色设置
参数四:线条宽度
参数五:和上面类似,LINE_AA也可通过数字16进行替代

特征融合
addWeighted(image, 0.7, backgrand, 0.3, 0, result);
原图image和背景图片backgrand按7:3进行融合,最终输出结果对象为result
这里的0表示beta也是一个偏移量微调的作用

#include"drawing.h"
#include<iostream>
#include<opencv2/opencv.hpp>void DRAWING::drawing(Mat& image) {Mat backgrand, result;backgrand = Mat::zeros(image.size(), image.type());Rect rect;rect.x = 100;rect.y = 150;rect.width = 200;rect.height = 100;rectangle(backgrand, rect, Scalar(255, 0, 0), -1, 8, 0);circle(backgrand, Point(150, 150), 15, Scalar(0, 255, 0 ), 1);line(backgrand, Point(100, 100), Point(200, 200), Scalar(255, 255, 255), 4, LINE_AA, 0);RotatedRect rrt;rrt.center = Point(200, 200);rrt.size = Size(120, 90);rrt.angle = 90.0;ellipse(backgrand, rrt, Scalar(0, 255, 255), 2, LINE_AA);imshow("Drawing", backgrand);addWeighted(image, 0.7, backgrand, 0.3, 0, result);imshow("result", result);}

三、主函数

yy_main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include "drawing.h"using namespace cv;
using namespace std;int main(int argc, char** argv) {Mat src = cv::imread("E:/C++_workspace/beyond.jpg", IMREAD_COLOR);if (src.empty()) {printf("load image is false...\n");return -1;}namedWindow("yanyu", WINDOW_FREERATIO);imshow("yanyu", src);DRAWING yy;yy.drawing(src);waitKey(0);destroyAllWindows();return 0;
}

项目结构如下:
在这里插入图片描述
效果图如下:
在这里插入图片描述

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

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

相关文章

Python笔记-super().init(root)的作用

假设我们有一个名为Animal的父类&#xff0c;它有一个属性color&#xff0c;在其构造函数__init__中被初始化&#xff1a; class Animal:def __init__(self, color):self.color color现在&#xff0c;我们想创建一个Animal的子类&#xff0c;名为Dog。Dog类有自己的属性name&…

QPaint绘制自定义仪表盘组件01

网上抄别人的&#xff0c;只是放这里自己看一下&#xff0c;看完就删掉 ui Dashboard.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomm…

【xss跨站漏洞】xss漏洞前置知识点整理

xss漏洞成因 xss漏洞是一种前端javascript产生的漏洞。 我们网站基本都是会用到javascript编写一些东西&#xff0c;浏览器也能直接识别javascript。 如果有一个地方能够输入文字&#xff0c;但是他又没有过滤你的输入&#xff0c;那么自己或者他人看到你输入的javascript代…

JVM知识——安全点

安全点是JVM要准备进行垃圾回收时&#xff0c;选定一些特定的位置&#xff0c;当应用程序线程执行到这些位置时&#xff0c;安全的先暂停下来&#xff0c;以便JVM执行GC线程进行垃圾回收。 JVM在字节码指令中会选取一些指令作为安全点&#xff0c;安全点的选取一般是循环结束、…

课时42:表达式_运算符_bc计算

3.1.5 bc计算 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 bc是一种任意精度的计算语言&#xff0c;提供了语法结构&#xff0c;比如条件判断、循环等&#xff0c;功能是很强大的&#xff0c;还能进行进制转换。常见参数-…

week04day02(爬虫02)

<span>: 通常用于对文本的一部分进行样式设置或脚本操作。<a>: 定义超链接&#xff0c;用于创建链接到其他页面或资源的文本。<img>: 用于插入图像。<br>: 用于插入换行。 姓名&#xff1a;<input type"text" value"lisi">…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第七天-内核函数接口(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取码&#xff1a;1688 //************************************************** #include <linux/module.h> /*module_init()*/ #include <linux/kernel.h> /* printk() *…

【析】考虑同时取送和时间窗的车辆路径及求解算法

期刊&#xff1a;computer engineering and applications 计算机工程与应用![c 引言 1. 问题分析 1.1 问题描述 问题描述为&#xff1a; 若干运输车辆从配送中心出发为客户取送货并最终返回配送中心&#xff0c;每位客户仅由一辆车服务一次&#xff0c;车辆在配送过程中任…

rust实战系列八:常量

在Rust中还可以用const关键字做声明。如下所示: const GLOBAL: i32 0; 使用const声明的是常量&#xff0c;而不是变量。因此一定不允许使用mut关键字修饰这 个变量绑定&#xff0c;这是语法错误。常量的初始化表达式也一定要是一个编译期常量&#xff0c;不 能是运行期的值。它…

ChatGPT丨成像光谱遥感技术中的AI革命:ChatGPT应用指南

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用&#xff0c;人工智…

尾矿库排洪系统结构仿真软件WKStruc(可试用)

1、背景介绍 尾矿库作为重大危险源之一&#xff0c;在国际灾害事故排名中位列第18位&#xff0c;根据中国钼业2019年8月刊《中国尾矿库溃坝与泄漏事故统计及成因分析》的统计&#xff0c;在46起尾矿库泄漏事故中&#xff0c;由于排洪设施导致的尾矿泄漏事故占比高达1/3&#x…

c#创建安装windows服务

背景:最近在做设备数据对接采集时,遇到一些设备不是标准的Service-Client接口,导致采集的数据不够准确;比如设备如果中途开关机后,加工的数量就会从0开始重新计数,因此需要实时监控设备的数据,进行叠加处理;考略到工厂设备比较多,实时监听接口的数据为每秒3次,因此将…

外包干了三年,技术算是废了。。。

先说一下自己的个人情况&#xff0c;大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近5年的手工测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的手工…

LeetCode.106. 从中序与后序遍历序列构造二叉树

题目 106. 从中序与后序遍历序列构造二叉树 分析 前面讲过根据前序和中序构建二叉树&#xff1a;博客链接 这道题是告诉我们一颗二叉树的后序和中序&#xff0c;让我们根据后序和中序构造出整颗二叉树。 拿到这道题&#xff0c;我们首先要知道中序的后序又怎样的性质&#…

云上业务一键性能调优,应用程序性能诊断工具 Btune 上线

- 01 - 终于等来了预算&#xff0c;这就把服务迁移到最新的 CPU 平台上去&#xff0c;这样前端的同事立马就能感受我们带来的速度提升了。可是…… 这些性能指标怎么回事&#xff1f;不仅没有全面提升&#xff0c;有些反而下降了。不应该这样啊&#xff0c;这可怎么办&#xf…

使用单一ASM-HEMT模型实现从X波段到Ka波段精确的GaN HEMT非线性仿真

来源&#xff1a;Accurate Nonlinear GaN HEMT Simulations from X- to Ka-Band using a Single ASM-HEMT Model 摘要&#xff1a;本文首次研究了ASM-HEMT模型在宽频带范围内的大信号准确性。在10、20和30 GHz的频率下&#xff0c;通过测量和模拟功率扫描进行了比较。在相同的频…

day05-进程通信

1> 将互斥机制的代码实现重新敲一遍 代码&#xff1a; #include<myhead.h>int num520;//临界资源//1.创建互斥锁 pthread_mutex_t fastmutex;//定义任务函数 void *task1(void *arg){printf("1111111\n");//3.临界区上面获取锁资源&#xff08;上锁&#…

LeetCode每日刷题:101. 对称二叉树

题目&#xff1a; 解题思路&#xff1a;可以新写一个函数&#xff0c;从root开始&#xff0c;root的left的头结点将记为lefttree&#xff08;左子树&#xff09;,root的lright的头结点将记为righttree&#xff08;右子树&#xff09;&#xff0c; 然后递归左子树的root.left与右…

【鸿蒙 HarmonyOS 4.0】TypeScript开发语言

一、背景 HarmonyOS 应用的主要开发语言是 ArkTS&#xff0c;它由 TypeScript&#xff08;简称TS&#xff09;扩展而来&#xff0c;在继承TypeScript语法的基础上进行了一系列优化&#xff0c;使开发者能够以更简洁、更自然的方式开发应用。值得注意的是&#xff0c;TypeScrip…

Python:Keyboard Interrupt - 当代码遇到“Ctrl+C“时发生了什么?

Python&#xff1a;Keyboard Interrupt - 当代码遇到"CtrlC"时发生了什么&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;【Matplotlib之旅&#xff1a;零基础精通数据可视化】 &#x1f4a1; 创作高质量博文&#x…