传统CV算法——基于Opencv的图像绘制

直线绘制

参数解析:

  • (图像矩阵,直线起始坐标, 直线终止坐标、颜色、线条厚度)
    cv2.line()是OpenCV中用于绘制直线的函数。
    参数说明:
  • img:要绘制直线的图像矩阵。
  • (100,30):直线的起点坐标。
  • (210,180):直线的终点坐标。
  • color:直线的颜色,三个值分别表示蓝色、绿色和红色通道的强度。这里(0,0,255)表示纯蓝色。
  • thickness:直线的宽度。默认为1,如果设置为大于1的整数,将绘制实心直线。

以上参数可以根据需要调整,以绘制不同颜色、宽度和位置的直线。

import cv2
import numpy as npimg  = cv2.imread(r"./images/1.jpg")cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

圆形绘制

  • 参数 (图像,圆心,半径,颜色,线条厚度)
    cv2.circle()是OpenCV库中用于绘制圆的函数,它可以在图像上绘制一个圆。

参数如下:

  • img:需要绘制圆的图像。
  • center:圆心的坐标,可以用一个元组(x,y)表示。
  • radius:圆的半径,以像素为单位。
  • color:圆的颜色,可以是一个元组(B,G,R)表示,或者是一个整数值,表示灰度值。
  • thickness:圆的边框线的粗细,如果为负值,表示圆填充颜色。
  • lineType:线的类型,可以是8常数代表8位连接,也可以是4常数代表4位连接。
  • shift:圆心坐标和半径的小数点位数。

注意:在绘制圆时,需要保证圆心坐标和半径都在图像范围内,否则可能会导致绘制失败。

import cv2
import numpy as npimg  = cv2.imread(r"./images/1.jpg")# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

矩形绘制

  • 参数(图像,左上角坐标,右下角坐标,颜色,线条厚度)
    cv2.rectangle函数是OpenCV中用于绘制矩形的函数。以下是cv2.rectangle函数的参数说明:

  • image:要绘制矩形的图像。这个参数必须是一个NumPy数组,即一个图像。

  • pt1:矩形的左上角顶点坐标。可以通过一个元组或一个列表来指定。例如(10, 10)或 [10, 10]。

  • pt2:矩形的右下角顶点坐标。同样可以通过一个元组或一个列表来指定。

  • color:矩形的颜色。可以是一个整数或一个元组。如果是一个整数,它代表了灰度值。如果是一个元组,它代表了RGB值。

  • thickness:矩形的边框线的宽度。默认值为1,表示绘制一个实心矩形。

  • lineType:矩形边框线的类型。默认值为cv2.LINE_8,表示8邻域连接。

  • shift:坐标点的小数点位数。默认值为0,表示坐标点的小数点位数为0。

cv2.rectangle函数可以用于绘制矩形的轮廓线,也可以用于填充矩形的颜色。

import cv2
import numpy as npimg  = cv2.imread(r"./images/1.jpg")# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

椭圆型绘制

  • image:它是要在其上绘制椭圆的图像。

centerCoordinates:它是椭圆的中心坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
axesLength:它包含两个变量的元组,分别包含椭圆的长轴和短轴(长轴长度,短轴长度)。
angle:椭圆旋转角度,以度为单位。
startAngle:椭圆弧的起始角度,以度为单位。
endAngle:椭圆弧的终止角度,以度为单位。
color:它是要绘制的形状边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
thickness:是形状边界线的粗细像素。厚度-1像素将用指定的颜色填充形状。
lineType:这是一个可选参数,它给出了椭圆边界的类型。
shift:这是一个可选参数。它表示中心坐标中的小数位数和轴的值。

import cv2
import numpy as npimg  = cv2.imread(r"./images/1.jpg")# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
# cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)
cv2.ellipse(img,center=(100,100),axes=(100,50),angle=0,startAngle=0,endAngle=360,color=(255,0,0),thickness=2)
cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

自定义形状

  • 多边形,isClosed 代表是否是封闭
    cv2.polylines函数用于绘制多边形线条。它的参数如下:

image: 要绘制线条的图像。
pts: 一个由多个多边形点的列表组成的列表,每个多边形点由(x, y)坐标表示。
isClosed: 一个布尔值,指示多边形是否是闭合的。如果为True,函数将在绘制最后一个点和第一个点之间绘制一条线条来闭合多边形。
color: 线条的颜色,可以是一个整数列表表示RGB颜色,或者可以是一个名为cv2.COLOR_*的预定义常量。
thickness: 线条的粗细,以像素为单位。
lineType: 线条的类型,可以是cv2.LINE_*的预定义常量。
shift: 点坐标的小数位数。

注意:pts参数必须是一个整数类型的数组,所以需要使用np.int32()函数将坐标数组中的元素转换为整数。

import cv2
import numpy as npimg  = cv2.imread(r"./images/1.jpg")# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
# cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.ellipse(img,center=(100,100),axes=(100,50),angle=0,startAngle=0,endAngle=360,color=(255,0,0),thickness=2)
pts = np.array([[10,5],[50,10],[70,20],[20,30]],dtype=np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],isClosed=True,color=(0,0,255),thickness=2)cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

绘制文本

cv2.putText()是OpenCV中用于在图像上绘制文字的函数。它有以下几个参数:

  1. img:需要绘制文字的图像。

  2. text:要绘制的文本内容。

  3. org:绘制文本的起始位置,是一个包含两个元素的元组,如(x, y)。

  4. fontFace:文本字体的类型,可以是预定义的字体类型(如cv2.FONT_HERSHEY_SIMPLEX,cv2.FONT_HERSHEY_PLAIN等),也可以是自定义的字体,使用字体文件的路径。

  5. fontScale:字体的缩放比例。

  6. color:文本的颜色,是一个包含三个元素的元组,表示B、G、R三个分量的值。

  7. thickness:文本的粗细线宽。

  8. lineType:线条的类型,可以是cv2.LINE_AA(抗锯齿线条)或cv2.LINE_8(8连接线条)。

  9. bottomLeftOrigin:一个布尔值,用于指定文本坐标相对于绘制原点的位置。如果为True,则文本坐标相对于图像的左下角;如果为False,则文本坐标相对于图像的左上角。

调用cv2.putText()函数后,会在指定的图像上绘制出文本。

import cv2
import numpy as npimg  = cv2.imread(r"./images/1.jpg")# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
# cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.ellipse(img,center=(100,100),axes=(100,50),angle=0,startAngle=0,endAngle=360,color=(255,0,0),thickness=2)
# pts = np.array([[10,5],[50,10],[70,20],[20,30]],dtype=np.int32)
# pts = pts.reshape((-1,1,2))
# cv2.polylines(img,[pts],isClosed=True,color=(0,0,255),thickness=2)cv2.putText(img,"gril",(10,30),cv2.FONT_HERSHEY_SIMPLEX,fontScale=1,color=(0,0,255),thickness=1,lineType=cv2.LINE_AA)cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

其他类型

ellipse():用于绘制椭圆或圆形的函数。它接受四个参数:(x, y, width, height)。其中,x和y是椭圆中心的坐标,width和height分别是椭圆的宽度和高度。

arc():用于绘制弧线的函数。它接受六个参数:(x, y, width, height, start, stop)。其中,x和y是弧线的中心坐标,width和height分别是弧线的宽度和高度,start和stop是弧线的起始角度和终止角度。

triangle():用于绘制三角形的函数。它接受六个参数:(x1, y1, x2, y2, x3, y3)。其中,(x1, y1),(x2, y2),(x3, y3)是三个顶点的坐标。

rect():用于绘制矩形的函数。它接受四个参数:(x, y, width, height)。其中,x和y是矩形的左上角坐标,width和height分别是矩形的宽度和高度。

quad():用于绘制四边形的函数。它接受八个参数:(x1, y1, x2, y2, x3, y3, x4, y4)。其中,(x1, y1),(x2, y2),(x3, y3),(x4, y4)是四个顶点的坐标。

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

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

相关文章

第二十三篇——地形篇:将领的四条职业道德准则

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 这一篇讲将领应该如何做,以及正反方面也讲到了职场人应该如何…

STM32CUBEIDE FreeRTOS操作教程(四):timer软件定时器

STM32CUBEIDE FreeRTOS操作教程(四):timer软件定时器 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件,不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&am…

oauth2 方式获取outlook邮箱收件箱(python)

1.在Azure 门户注册应用程序 微软文档地址 重定向的地址配置(微软地址): https://login.microsoftonline.com/common/oauth2/nativeclient 注册应用地址 2.程序代码 #安装包以及需要的驱动 pip3 install playwrightplaywright install import base64 import jso…

MAT:一款针对MSSQL服务器的安全检测与审计工具

关于MAT MAT是一款针对MSSQL服务器的安全检测与审计工具,该工具使用C#开发,可以帮助广大研究人员快速识别和发现MSSQL 服务器中的安全问题,并实现安全检测与审计目的。 功能介绍 1、执行自动检查并识别安全问题; 2、允许通过 Win…

暑期档总结:哪部国漫年番表现更优?

“暑期档”可能是所有档期中绵延时间最长的,作为该时间段主力的学生人群,在学业压力较小的假期中,需要更多娱乐方式来填充生活。除了电影之外,动画番剧越来越成为这一群体的不二选择,各个动画制作公司也会选择把精彩剧…

Datawhle X 李宏毅苹果书AI夏令营深度学习笔记之——卷积神经网络的前世今生

一、卷积神经网络简介 卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型,尤其擅长处理图像和视频等高维度的数据。CNN 通过模仿人类视觉系统的工作方式,自动学习数据中的空间层次结构,使得它在计算…

GDB 查看汇编

查看汇编 x disassemble

24秋开学考

文件上传 上传一个.php的格式,上面说是非法的文件格式。 2.传了一个phpinfo.gif,说什么在目录里。 3.有两个页面一个labs1一个labs2 ,当在第一个页面上传1.jpg,在第二个页面上传1.jpg时,给了我们一个目录,在测试其他时…

Linux下的Makefile与进度条程序

目录 Linux下的Makefile与进度条程序 Makefile与make Makefile与make介绍 创建第一个Makefile并使用make Makefile文件基本格式介绍 Makefile依赖方法执行过程 Makefile通用写法 进度条程序 实现效果 前置知识 回车(\r)与换行(\n) 输出缓冲区 实现进度条 Linux下的…

15、Django Admin添加自定义字段功能

修改模型类HeroAdmin admin.register(Hero) class HeroAdmin(admin.ModelAdmin):change_list_template "entities/heroes_changelist.html"... # 此处原代码不动,只增加此前后代码def get_urls(self):urls super().get_urls()my_urls [path(immort…

溜狗牵绳行为检测-目标检测数据集(包括VOC格式、YOLO格式)

溜狗牵绳行为检测-目标检测数据集(包括VOC格式、YOLO格式) 数据集: 链接:https://pan.baidu.com/s/1CwLEAKcdlh9hbcBNh_Awdw?pwdiu6b 提取码:iu6b数据集信息介绍: 共有 1980 张图像和一一对应的标注文件…

7.统一网关-Gateway

文章目录 1.统一网关介绍2.网关开发3.predicate4.Route Predicate Factories(路由断言工厂)4.1Path 路由断言工厂4.2.Method 路由断言工厂4.3 Header 路由断言工厂4.4 Query 路由断言工厂4.5 Host 路由断言工厂4.6 After 路由断言工厂4.7 Before 路由断言工厂4.8 Between 路由断…

超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)

超声波测距模块参考资料 1.电路连接及引脚配置 触发信号PA3只需要输出10us的高电平,所以直接设置成 普通的GPIO端口即可;回响信号使用外部中断,上升沿信号产生外部中断,打开定时器,下降沿再产生一次中断,读…

国内外大模型汇总(包括科大星火、文心一言、通义千问、智普清言、华为大模型)

国内外大模型汇总 1. 科大讯飞星火认知大模型 主要特点: 多语言能力:以中文为核心,同时支持多语言处理,能够进行跨语种的语言理解和生成。 广泛的任务能力:具备内容生成、语言理解、知识问答、推理、数学计算、代码…

强化网络安全:通过802.1X协议保障远程接入设备安全认证

随着远程办公和移动设备的普及,企业网络面临着前所未有的安全挑战。为了确保网络的安全性,同时提供无缝的用户体验,我们的 ASP 身份认证平台引入了先进的 802.1X 认证协议,确保只有经过认证的设备才能接入您的网络。本文档将详细介…

Kafka【六】Linux下安装Kafka(Zookeeper)集群

Kafka从早期的消息传输系统转型为开源分布式事件流处理平台系统,所以很多核心组件,核心操作都是基于分布式多节点的。本文这里采用三台虚拟机模拟真实物理主机搭建Zookeeper集群和kafka集群。 VMware可以使用户在一台计算机上同时运行多个操作系统&…

使用AI写WebSocket知识是一种怎么样的体验?

一、WebSocket基础知识 1. WebSocket概念 1.1 为什么会出现WebSocket 一般的Http请求我们只有主动去请求接口,才能获取到服务器的数据。例如前后端分离的开发场景,自嘲为切图仔的前端大佬找你要一个配置信息的接口,我们后端开发三下两下开…

Windows下的Redis启动报错Redis service failed to start

报错原因:Redis服务没有找到log文件 解决方案: 1、在Redis目录下打开redis.windows-service.conf文件 2、找到logfile存放目录,一般默认为Logs/redis_log.txt 3、在Redis目录创建Logs文件夹,在Logs文件夹下创建redis_log.txt文件…

机器学习数学公式推导之降维

文章目录 降维线性降维-主成分分析 PCA损失函数SVD 与 PCoASVD 的基本形式SVD 的计算p-PCA 小结 P22 (系列五) 降维1-背景 本文参考 B站UP: shuhuai008 🌹🌹 降维 我们知道,解决过拟合的问题除了正则化和添加数据之外,降维就是最…

自己部门日均1000+告警?如何减少90%无效告警?

目录标题 一、告警的类别1.技术告警1.1基础设施告警1.2基本服务告警 2.业务告警3.监控大盘告警 二、为何需要告警治理?三、治理迫在眉睫1.1告警治理策略1.2核心监控告警点1.3避免告警反模式1.4告警规约制定1.5自动化处理 一、告警的类别 一般的告警分为以下几点&am…