当前位置: 首页 > news >正文

open-cv绘制简单形状line() circle() rectangle() polylines() putText() cvtColor()

OpenCV彩色图像中一个像素是按照“B-G-R”模式组织的。
绘图函数的一些公众参数:
img :图像对象
color: 颜色,如果彩色用一个三元组表示,三元组的元素按照B-G-R组织,三元组(0,255,0)中B为0,G为255,R为0所以表示的是纯绿色。如果是灰度,则用单个数值表示.
thickness:线条宽度。
point:点位置,用一个二元组表示。
lineType : 线条类型,在绘制曲线时通常使用CV2.LINE_AA可以有更好的平滑效果。

1.

直线 cv2.line()
第一个参数为要绘图的图像实例
第二个参数为起点,二元组
第三个参数为终点,二元组
第四个参数为颜色
第五个参数为线宽

先用numpy构建一个512×512大小的纯白色图片对象:img = np.ones((512,512,3)),
起点选在start=(50,50),终点选择stop=(300,300),颜色设置为红色color=(0,0,255),线宽thick=5import cv2
import numpy as np
print('VX公众号: 桔子code / juzicode.com')
print('cv2.__version__:',cv2.__version__)
img = np.ones((512,512,3))
#img = np.zeros((512,512)) #黑色背景
#img = np.ones((512,512)) #白色背景
start=(50,50)
stop=(300,300)
color=(0,0,255)
thick=5
cv2.line(img,start,stop,color,thick)
cv2.imshow('img',img)
cv2.waitKey()

2

.圆形cv2.circle()
第1参数是图像对象;
第2个参数为圆心;
第3个参数为半径;
第4个参数为颜色;
第5个参数为线条宽度,如果使用-1会自动填充圆形的内部;

import cv2
import numpy as np
img = np.ones((512,512,3)) #白色背景
center=(100,100)
radius=50
color=(0,255,255)  #黄色
cv2.circle(img,center, radius, color, 5) #线条center=(200,200)
cv2.circle(img,center, radius, color, -1) #填充
cv2.imshow('img',img)cv2.waitKey()

3.

方形cv2.rectangle()
第1个参数为图像对象;
第2个参数为方形左上角坐标;
第3个参数为方形右下角坐标,方形的宽高自动根据起始点坐标计算;
第4个参数为颜色;
第5个参数为线条宽度,如果使用-1会自动填充圆形的内部;

import cv2
import numpy as np
img = np.ones((512,512,3)) #白色背景topleft=(10,100)
downright=(111,333)
color=(255,0,0)  #蓝色
cv2.rectangle(img,topleft, downright, color, 2) #线条topleft=(300,100)
downright=(500,300)
color=(0,255,0)  #蓝色
cv2.rectangle(img,topleft, downright, color, -1) #填充cv2.imshow('juzicode',img)cv2.waitKey()

4

多边形cv2.polylines()

import cv2
import numpy as np
img = np.ones((512,512,3)) #白色背景
color=(0,255,0)  #绿色
#五角星
pts = np.array([[70,190],[222,190],[280,61],[330,190],[467,190],[358,260],[392,380],[280,308],[138,380],[195,260]])
pts = pts.reshape((-1,1,2))  #reshape为10x1x2的numpy
print(pts.shape)     # (10, 1, 2)
cv2.polylines(img,[pts],True,color,5)
#方形
pts = np.array([[10,50],[100,50],[100,100],[10,100]])
pts = pts.reshape((-1,1,2))#-1 表示自适应该维度大小。这里 reshape 的第一个参数为-1, 表明这个参数是根据后面的维度1X2的计算出来的。
比如如果一个 array有 NX1X2个元素,那么它的 reshape(-1, 1, 2) 方法将返回一个 shape = (n, 1, 2) 的 ndarray.cv2.polylines(img,[pts],True,color,3)cv2.imshow('juzicode.com',img)
cv2.waitKey()

5.

输出文字:cv2.putText()
第1个参数为图像对象;
第2个参数为要输出的字符串;
第3个参数为起始点位置;
第4个参数为字体;
第5个参数为字体大小;
第6个参数为颜色;
第7个参数为线条宽度,默认为1;
第8个参数为线型,默认为LINE8;

import cv2
import numpy as np
img = np.ones((512,512,3)) #白色背景
text = 'VX:juzicode'
start = (10,200) 
font = cv2.FONT_HERSHEY_SIMPLEX
fontscale = 2
color=(0,0,255)  #红色
thick = 2
linetype = cv2.LINE_AA
cv2.putText(img,text,start, font, fontscale, color,thick,linetype)cv2.imshow('juzicode.com',img)
cv2.waitKey()

OpenCV中并没有包含中文字体,一个变通的方法是通过pillow转换后显示中文:

import cv2
import numpy as np
from PIL import Image,ImageDraw,ImageFont
img = np.full((512,512,3),255,np.uint8) #白色背景
img_pil = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))text = 'VX:图片code'
start = (10,200)      #起始位置
fonttype = 'msyh.ttc' #微软雅黑字体,和具体操作系统相关
fontscale = 30        #字体大小
font = ImageFont.truetype(fonttype,fontscale)
draw = ImageDraw.Draw(img_pil)
draw.text(start,text,font=font,fill=(255,0,0))  #PIL中BGR=(255,0,0)表示红色
img_ocv = np.array(img_pil)                     #PIL图片转换为numpy
img = cv2.cvtColor(img_ocv,cv2.COLOR_RGB2BGR)   #PIL格式转换为OpenCV的BGR格式
cv2.imshow('tupian',img)
cv2.waitKey()cv2.cvtColor(p1,p2) 是颜色空间转换函数,p1是需要转换的图片
,p2是转换成何种格式。
cv2.COLOR_BGR2RGB 将BGR格式转换成RGB格式
cv2.COLOR_BGR2GRAY 将BGR格式转换成灰度图片

相关文章:

open-cv绘制简单形状line() circle() rectangle() polylines() putText() cvtColor()

OpenCV彩色图像中一个像素是按照“B-G-R”模式组织的。 绘图函数的一些公众参数: img :图像对象 color: 颜色,如果彩色用一个三元组表示,三元组的元素按照B-G-R组织,三元组(0,255,0)中B为0,G为2…...

基于 PyTorch + LSTM 进行时间序列预测(附完整源码)

时间序列数据,顾名思义是一种随时间变化的数据类型。 例如,24小时内的温度、一个月内各种产品的价格、某家公司一年内的股票价格等。深度学习模型如长短期记忆网络(LSTM)能够捕捉时间序列数据中的模式,因此可以用于预…...

GEE页面介绍

目录一、背景二、用户界面三、数据类型:栅格1、请求图像集合2、学习查看栅格元数据3、矢量实例一:四、数据集五、数据属性1、空间分辨率2、时间分辨率六可视化多个波段1、真彩色(TCI)2彩色红外(CI)3、伪色 1 和 2 (FC1/FC2)七、可…...

python自动发送邮件,qq邮箱、网易邮箱自动发送和回复

在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件。今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件。 一、获取邮箱的SMTP授权码。…...

hastcat

hashcat 下载地址: https://hashcat.net/hashcat/ 案例 Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...https://xz.aliyun.com/t/4008破解linux shadow /etc/shadow中密码格式: $id$salt$encrypted如:$1$2eWq10AC$NaQqalCk3 1表…...

242. 一个简单的整数问题

Powered by:NEFU AB-IN Link 文章目录242. 一个简单的整数问题题意思路代码242. 一个简单的整数问题 题意 给定长度为 N的数列 A,然后输入 M行操作指令。 第一类指令形如 C l r d,表示把数列中第 l∼r个数都加 d 第二类指令形如 Q x,表示询问…...

docker安装Redis高可用(一主二从三哨兵)

本次教程使用docker swarm安装 准备三台机器 hostIP用途node1192.168.31.130redis-master01,redis哨兵节点01node2192.168.31.131redis-slave01, redis哨兵节点02node3192.168.31.132redis-slave02 redis哨兵节点02 注意事项: 1:需要保证三…...

安全防御之入侵检测篇

目录 1.什么是IDS? 2.IDS和防火墙有什么不同?3.IDS的工作原理? 4.IDS的主要检测方法有哪些?请详细说明 5.IDS的部署方式有哪些? 6.IDS的签名是什么意思?签名过滤器有什么用?例外签名的配置作…...

学习系统编程No.10【文件描述符】

引言: 北京时间:2023/3/25,昨天摆烂一天,今天再次坐牢7小时,难受尽在不言中,并且对于笔试题,还是非常的困难,可能是我做题不够多,也可能是没有好好的总结之前做过的一些…...

网络基础认识

目录 一、计算机网络背景 1.1 网络发展 1.2 "协议"由来 二、网络协议初识 2.1 协议分层 2.2 OSI七层模型 2.3 TCP/IP五层模型 三、网络协议栈 四、数据包封装与分用 五、网络传输基本流程 5.1 同局域网的两台主机通信 5.2 跨网络的两台主机通信 六、网络…...

【蓝桥杯_练习】

蓝桥杯1.创建工程2.LED灯点亮led.c3.LCD液晶屏显示lcd.c4.定时器按键单机interrupt.hinterrupt.cman.c5.定时器(长按键)interrupt.hinterrupt.cmain.c6.PWMmain.c7.定时器-输入捕获(频率,占空比测量)interrupt.cmain.c…...

【C语言蓝桥杯每日一题】——跑步锻炼

【C语言蓝桥杯每日一题】—— 跑步锻炼😎前言🙌排序🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介…...

Qt之实现类似软件安装时的新功能介绍界面

一.效果 在软件安装时,一般会轮播软件的新功能,安装后,如果还想查看这些新功能该怎么办呢,我们可以把这个介绍新新功能的小应用集成到软件的“帮助”菜单中,比起纯黑文字的无趣介绍,图文方式的呈现会生动得多。 最近在看《赘婿》,借几张图过来用用。 二.原理 1.分层结…...

echarts地图不同地区设置不同的颜色

var myChart ec.init(document.getElementById(main));let option {tooltip: {trigger: item,},dataRange: {//左下角的颜色块。start:值域开始值;end:值域结束值;label:图例名称;color:自定义…...

网易云音乐API部署Vercel获取接口过程

前提:部署自己的网易云接口主要用途在于在完成前端的仿网易云播放器的时候,根据自己部署的接口可以用于获取数据。大体流程是通过在github上fork别人的API接口项目,然后在Vercel部署即可获得自己的网易云后端数据接口了,不过根据我…...

Java基础:字符串(String)及常用操作

目录 字符串的声明及创建 字符串的操作 连接字符串(或concat) 获取字符串的长度 length 查找字符串 indexOf 获取字符串某个位置的字符 charAt 查询某个字符串是否存在 contains 截取字符串 substring(一) 截取字符串 su…...

FL Studio 21中文版支持主题随心换,FL Studio 21Mac版新增对苹果M2/1家族芯片原生支持。

FL Studio 21.0.0 官方中文版重磅发布 纯正简体中文支持,更快捷的音频剪辑及素材管理器,多样主题随心换! Mac版新增对苹果M2/1家族芯片原生支持。 更新版本:21.0.0支持语言:简体中文/英语更新时间:2022.12…...

【蓝桥杯集训·周赛】AcWing 第96场周赛

文章目录第一题 AcWing 4876. 完美数一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4877. 最大价值一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4878. 维护数组一、题目1、原…...

【数据结构】顺序表的深度刨剖析

前言:在上一篇文章中,我们已经对数据结构有了一定了解,我们可以通过优化空间复杂度或者时间复杂度从而提高我们程序运行或存储速率。至此我们就知道了数据结构的重要性,所以今天我们将要了解和学习一种实用的数据结构——线性表。…...

Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例

Unity 之 使用原生UGUI实现随手移动摇杆功能实现效果一,实现思路1.1 原理解析1.2 思路概述二,实现代码2.1 随手落下2.2 摇杆转动三,源码分享3.1 场景搭建3.2 完整代码3.3 实现效果实现效果 本文最终实现效果: 一,实现…...

Linux内核源代码概述

Linux内核源代码非常庞大,截止到2015年据统计代码总量就已经超过1500万行(LOC,Line of Code),看代码总量非常吓人,具体看这1500万行代码的大致分布情况如下图。 显然占比最大的drivers和arch目录下的代码合…...

Nginx 教程-动静分离

一、Nginx 动静分离理论1、概念今天学习和梳理Nginx动静分离,动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,之所以要进行动静分离,其一为了提高前端…...

自己设计的网站,如何实现分页功能?(详细代码+注释)

目录 前言 实现分页功能 需求分析 客户端开发 服务器开发 前后端交互——两种前端得到 文章总页数 的方法,那种更合适? 前言 你在设计网站的时候是否有过这样的烦恼:“我设计的网站怎么就是从上到下一条线内容全部展开,一点都…...

STM32F407控制微型推拉式电磁铁(通过继电器)

1、继电器 继电器相当于开关,单片机通过io口高低电平的控制来控制继电器的开闭。采用继电器的好处除了能够用低电压控制高电压(如32单片机控制220V的电压)外,还可以防止电流反冲,弄烧单片机。 本文采用3.3v的电磁铁&am…...

VS Code工作区用法

背景VS Code可以通过"文件/打开文件夹"来打开本地项目,但是想要打开多个项目便需要来回切换,比较费劲。此时就可以使用工作区功能,将不同的项目放置到同一个工作区中,这样切换项目的时候就会非常方便。操作方法打开其中…...

Mybatis-Plus SQLFeatureNotSupportedException: getObject with type问题解决

问题描述: Error attempting to get column modify_time from result set. Cause: java.sql.SQLFeatureNotSupportedException: getObject with type ; getObject with type; nested exception is java.sql.SQLFeatureNotSupportedException: getObject with type…...

Unity | 发布Android的那些事儿

1.使用UnityWebRequest获取StreamingAssets中的json文件(1)直接根据不同平台指定url路径IEnumerator AITalPredZhanHui(){string url;string fileName "girl.json"; #if UNITY_EDITOR || UNITY_STANDALONEurl "file://" Applicat…...

git为什么要先commit,然后pull,最后再push?而不是commit完直接push?

情况是这样的,现在远程有一个仓库,分支就一个,是master。然后我本地的仓库是从远程的master上clone下来的。大家都是clone下来,再在自己本地改好,再commit然后pull然后push,大家都是这么做的。那么现在问题…...

若依框架----源码分析(@RateLimiter)

若依作为最近非常火的脚手架,分析它的源码,不仅可以更好的使用它,在出错时及时定位,也可以在需要个性化功能时轻车熟路的修改它以满足我们自己的需求,同时也可以学习人家解决问题的思路,提升自己的技术水平…...

页面的重排和重绘?

思路: 网页渲染HTML文件到浏览器的过程->定义->如何优化网页渲染HTML文件到浏览器的过程HTML 文件通过HTML解析器解析生成DOM树;CSS文件通过CSS解析器生成CSSOM树;DOM树和CSSOM树生成渲染树(render tree)&#x…...

哪些网站开发/友情链接交换平台源码

桔妹导读:随着计算机技术和工程架构的发展,微服务变得越来越热。如今,绝大多数服务都处于分布式环境中,其中,数据一致性是我们一直关注的重点。分布式锁到底是什么?经过了哪些发展演进?工程上有…...

免费的ppt网站推荐/视频网站推广

在使用spring创建bean的时候需要在指定bean的生命周期,bean的声明周期有一下几种: singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例prototype表示每次获得bean都会生成一个新的对象request表示在一次http请…...

做外贸现在一般都通过哪些网站/网络营销方法

最近看完了空间计量经济学的理论部分,因此打算开始学习一下实战,实战所使用的主要是GEODA家族的软件包们,首先还是打算先学习python的pysal包,毕竟还是更喜欢代码,而且相较于GEODA和GEODASPACE,写代码还是会…...

钦州公司做网站/游戏推广公司靠谱吗

Edge浏览器主页被360劫持怎么办 ? 我出现的问题是在安装了360安全卫士之后,每次打开Edge浏览器,出现的都是360浏览器界面,全是一堆的垃圾广告和信息,太影响效率了。经查证,是Edge浏览器被360劫持了&#xf…...

网站建设的过程包括几个阶段/营销策划与运营公司

一、mysql数据库日常操作。 1.启动mysql:/etc/init.d/mysql start (前面为mysql的安装路径) 2.重启mysql: /etc/init.d/mysql restart (前面为mysql的安装路径) 3.关闭mysql: /etc/init.d/mysql stop(前面为mysql的安装路径) …...

wordpress 离线更新/人民网 疫情

网友 oneway_01 问了我一个问题,对于工作流形业务建模提出了一些疑问。这是好问题,值得讨论,特意将它发表出来。另一方面,能够做出这样的思考,说明oneway_01同学对用例方法的认知已经很深入了。恭喜一下!**…...