OpenCV-12绘制图像

OpenCV提供了许多绘制图像的API,可以在图像上绘制各种图形,例如直线,矩形,圆,椭圆等图形。

一、画直线

利用API line(img, pt1, pt2, color, thickness, lineType, shift)可以绘制直线。

其中img:表示在哪个图像上画直线

pt1,pt2:开始点和结束点,用于指定线的开始和结束位置。(按照坐标点的形式写入,用元组的格式,先列后行)

color:指定直线的颜色。(颜色的形式也为BGR的元组形式)

thickness:指定线宽。(数值越大,线条越粗)

lineType:指定线性,线性为0, 4, 8, 16,默认为8。(只有实线一种类型,数字越大,线越光滑)

shift:坐标缩放比例。(一般可以不用写)

示例代码如下:

import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图cv2.line(img, (10, 20), (300, 400), (0, 0, 255), 5, 4)   # 画红色的线
cv2.line(img, (80, 100), (380, 480), (0, 0, 255), 5, 16)cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

二、画矩形

画矩形的API中的参数与画直线的API一样,比较简单。

示例代码如下:

import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图cv2.rectangle(img, (20, 50), (380, 380), (0, 255, 0), 5, 16)   # 用绿色画框cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

三、画圆

画圆我们使用以下API:circle(img, center, radius, color, thickness, lineType, shift)

相比较于画直线与矩形,将起始点和终点改为中心点和半径,其他参数相同。

示例代码如下:

import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图# Opencv读取的行和列与numpy相反
cv2.circle(img, (320, 240), 50, (255, 0, 0), 5, 16)   # 在中心点用蓝色画圆cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

四、绘制椭圆

使用API  cv.ellipse(img, center, axes, angle, startAngel, endAngle, color, thickness, lineType, shift)

其中img, center, color, thickness, lineType, shift与上述参数要求一样。

Opencv画椭圆,相当于将椭圆锁在一个矩形里面,沿着切线画。

axes为axis的复数,需要填写椭圆x轴与y轴长度的一半。

angle:椭圆可以任意旋转角度,可以是横着的也可以是竖着的。(默认是0°,且逆时针旋转)

startAngle:从哪个角度开始

endAngle:从哪个角度结束°

开始角度和结束角度可以设置画取椭圆的一部分,而不是整个椭圆。从0°~360°则为一个完整的椭圆。

当把axes的两个数值改为相等,则相当于画圆形。

示例代码如下:

import cv2
import numpy as npimg = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图
img2 = np.zeros((480, 640, 3), np.uint8)   
img3 = np.zeros((480, 640, 3), np.uint8)   cv2.ellipse(img, (320, 240), (80, 40), 0, 0, 360, (0, 255, 0), 5, 16)
cv2.ellipse(img2, (320, 240), (80, 40), 90, 0, 360, (0, 255, 0), 5, 16)
cv2.ellipse(img3, (320, 240), (80, 40), 0, 0, 180, (0, 255, 0), 5, 16)
# Opencv读取的行和列与numpy相反cv2.imshow("line", img)
cv2.imshow("line2", img2)
cv2.imshow("line3", img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

通过改变不同的角度值可以获取不同的椭圆类型。

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

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

相关文章

都2024年了!你还不知道在Docker中安装jdk?

目录 前言: Docker安装JDK(8) 查看以及安装的镜像 拉取JDK(8)的镜像文件 ​编辑 运行容器 进入容器 检查安装 如果我的博客帮助到你,麻烦点个小小的赞即可 前言: 在2024年,Docker已经成为了容器化…

Excel文件怎么找回?记牢这3个简单方法!

“我的Excel中有很多重要的数据,但是在清理电脑时,我不小心把表格删除了,有什么方法可以找回Excel文件吗?” 在使用电脑时,我们经常使用Excel处理各种数据。但如果误删除了Excel文件,或者由于其他原因导致文…

杰发科技AC7840——Eclipse环境DMA注意事项

0.序 用 户 使 用 DMA 时 , 所 有 DMA 搬 运 的 SRAM 数 据 都 必 须 存 放 在 SRAM_U 区 (0x20000000~0x2000EFFF) 。 1. 修改办法 第一步: RAM定义 /* Specify the memory areas */ MEMORY {FLASH (rx) : ORIGIN 0x00000000, LENGT…

mysql中释放表空间的几种方式

删除数据命令 DELETE FROM sys_audit_log WHERE create_time < DATE_SUB(DATE(NOW()),INTERVAL 1 MONTH) 删除前表空间信息&#xff1a; 删除后未处理空间 查看实际行数 SELECT COUNT(*) FROM sys_audit_log; 返回结果&#xff1a;4673 执行分析后表统计&#xff1a; A…

YOLOv8改进:IoU系列篇 | Shape-IoU关注边界框本身的形状和尺度来计算损失 | 2023年12月最新IoU改进

🚀🚀🚀本文改进: 提出了一种新颖的Shape-IoU,小目标检测实现涨点,更加关注边界框本身的形状和尺度来计算损失 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.Shape-IoU原理介绍 论文:https://ar…

如何使用Plex在Windows系统搭建个人媒体站点公网可访问

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…

PyTorch官网demo解读——第一个神经网络(4)

上一篇&#xff1a;PyTorch官网demo解读——第一个神经网络&#xff08;3&#xff09;-CSDN博客 上一篇我们聊了手写数字识别神经网络的损失函数和梯度下降算法&#xff0c;这一篇我们来聊聊激活函数。 大佬说激活函数的作用是让神经网络产生非线性&#xff0c;类似人脑神经元…

Web自动化测试框架总结

实施过了web系统的UI自动化&#xff0c;回顾梳理下&#xff0c;想到什么写什么&#xff0c;随时补充。 首先&#xff0c;自动化测试不是手动测试的替代品&#xff0c;是比较好的补充&#xff0c;而且不是占大比重的补充。 70%的测试工作集中在底层接口测试和单元测试&#xff0…

【Unity入门】MenuItem 和 ContextMenu 的使用方法

目录 一、ContextMenu描述使用示例ContextMenuItem使用示例 二、MenuItem描述使用示例 三、MenuItem 和 ContextMenu 的区别 一、ContextMenu 描述 ContextMenu 属性用于向上下文菜单添加命令。 在该附加脚本的 Inspector 中&#xff0c;当用户选择该上下文菜单时&#xff0c…

机器人活动区域 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 现有一个机器人,可放置于 M x N 的网格中任意位置,每个网格包含一个非负整数编号,当相邻网格的数字编号差值的绝对值小于等于 1 时机器人可以在网格间移动。 问题: 求机器人可活动的最大范围对应的网格点数目。 说明: 网格…

Bulbea助力实现股票的深度学习量化

大家好&#xff0c;Bulbea 是一个基于深度学习开发的&#xff0c;用于股票市场预测和建模的Python库。Bulbea 自带了不少可用于股票深度学习训练及测试的API&#xff0c;并且易于对数据进行扩展和延申&#xff0c;构建属于我们自己的数据及模型。 1.Bulbea基本使用方法 Bulbe…

从零开始配置kali2023环境:配置jupyter的多内核环境

在kali2023上面尝试用anaconda3&#xff0c;anaconda2安装实现配置jupyter的多内核环境时出现各种问题&#xff0c;现在可以通过镜像方式解决 1. 搜索镜像 ┌──(holyeyes㉿kali2023)-[~] └─$ sudo docker search anaconda ┌──(holyeyes㉿kali2023)-[~] └─$ sudo …