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

Python----OpenCV(图像的绘制——绘制直线,绘制矩形,绘制圆形,绘制多边形)

一、绘制直线

cv2.line(image, pt1, pt2, color, thickness)
参数说明
image目标图像。
pt1线段起点,格式为 (x, y)。
pt2线段终点,格式为 (x, y)。
color线条颜色,格式为 (B, G, R)。
thickness线条的粗细,默认值为 1。
import cv2
import numpy as npimg = np.zeros((500, 500, 3), dtype=np.uint8) # 创建一个500x500像素的黑色图片,3表示彩色图片(BGR),np.uint8表示像素值为8位无符号整数
cv2.line(img, (100, 100), (300, 300), (0,0,255), 5) # 在图片上画一条直线,起点(100,100),终点(300,300),颜色为灰色(125,125,125),线宽为5
cv2.imshow('img', img) # 显示图片,窗口名为'img'
cv2.waitKey(0) # 等待按键,0表示无限等待,直到用户按下任意键

二、绘制矩形

cv2.rectangle(image, pt1, pt2, color, thickness)
参数说明
image目标图像。
pt1线段起点,格式为 (x, y)。
pt2线段终点,格式为 (x, y)。
color线条颜色,格式为 (B, G, R)。
thickness线条的粗细,默认值为 1。
import cv2
import numpy as np# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8) # 创建一个400x400像素的黑色图片,3表示彩色图片(BGR),np.uint8表示像素值为8位无符号整数# 绘制一个绿色矩形
cv2.rectangle(image, (100, 100), (300, 200), (0, 255, 0), thickness=3) # 在图片上画一个矩形,左上角坐标(100,100),右下角坐标(300,200),颜色为绿色(0,255,0),线宽为3cv2.imshow("Rectangle", image) # 显示图片,窗口名为"Rectangle"
cv2.waitKey(0) # 等待按键,0表示无限等待,直到用户按下任意键
cv2.destroyAllWindows() # 销毁所有OpenCV创建的窗口

三、绘制圆形

cv2.circle(image, center, radius, color, thickness)
参数说明
image目标图像。
center圆心坐标 (x, y)。
radius圆的半径。
color线条颜色,格式为 (B, G, R)。
thickness正值 - 圆的边框粗细,负值 - 填充整个圆。
import cv2
import numpy as np# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8) 
# 使用NumPy创建一个400x400像素的数组,表示一个空白图像。
# (400, 400) 是图像的高度和宽度。
# 3 表示图像有3个颜色通道(蓝色、绿色、红色,即BGR格式)。
# dtype=np.uint8 指定数组中每个元素的类型是8位无符号整数,这意味着每个颜色通道的像素值范围是0到255。
# 初始值为0,所以图像是黑色的。# 绘制一个蓝色圆
cv2.circle(image, (200, 200), 50, (255, 0, 0), thickness=-1)
# 在图像上绘制一个圆。
# image: 要在其上绘制圆的图像。
# (200, 200): 圆心的坐标,X轴200,Y轴200。
# 50: 圆的半径,像素单位。
# (255, 0, 0): 圆的颜色,BGR格式。这里是蓝色(蓝色通道255,绿色和红色通道0)。
# thickness=-1: 圆的填充方式。-1表示填充整个圆,如果指定一个正整数,则表示圆的边框宽度。cv2.imshow("Circle", image) # 显示图像,窗口标题为"Circle"
cv2.waitKey(0) # 等待用户按下任意按键。0表示无限等待。
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口。

四、绘制多边形

cv2.polylines(image, pts, isClosed, color, thickness)
参数说明
image目标图像。
pts多边形的顶点集合,格式为 np.array([[x1, y1], [x2, y2], ...],dtype=np.int(32)。
isClosed布尔值,是否闭合多边形。
color线条颜色,格式为 (B, G, R)。
thickness边框的粗细。
import cv2
import numpy as np# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)
# 使用NumPy创建一个400x400像素的数组,表示一个空白图像。
# (400, 400) 是图像的高度和宽度。
# 3 表示图像有3个颜色通道(蓝色、绿色、红色,即BGR格式)。
# dtype=np.uint8 指定数组中每个元素的类型是8位无符号整数,这意味着每个颜色通道的像素值范围是0到255。
# 初始值为0,所以图像是黑色的。# 定义多边形顶点
points = np.array([[150, 150], [250, 150], [300, 250], [200, 300]], dtype=np.int32)
# 定义多边形的各个顶点坐标。
# np.array() 创建一个NumPy数组。
# 每个子列表 [x, y] 代表一个顶点的(x, y)坐标。
# dtype=np.int32 指定顶点坐标的数据类型为32位整数。# 绘制多边形
cv2.polylines(image, [points], isClosed=True, color=(255, 255, 0), thickness=2)
# 在图像上绘制多边形。
# image: 要在其上绘制多边形的图像。
# [points]: 顶点的数组列表。即使只有一个多边形,也需要将其放在一个列表中。
# isClosed=True: 表示多边形是闭合的,即最后一个顶点会与第一个顶点连接。如果为False,则只绘制开放的折线。
# color=(255, 255, 0): 多边形的颜色,BGR格式。这里是青色(蓝色和绿色通道255,红色通道0)。
# thickness=2: 多边形边框的线宽,像素单位。cv2.imshow("Polygon", image) # 显示图像,窗口标题为"Polygon"
cv2.waitKey(0) # 等待用户按下任意按键。0表示无限等待。
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口。

http://www.xdnf.cn/news/14297.html

相关文章:

  • (javaSE)抽象类和接口:抽象类概念语法和特性, 抽象类的作用;接口的概念 接口特性 实现多个接口 接口间的继承 Object类
  • Qt--信号槽发送QVector
  • Relin梦中门——第二章——感官
  • jojojojojo
  • java 设计模式_行为型_15迭代器模式
  • nginx 配置返回 文件大小
  • Go语言底层(四): 深入浅出Go语言的ants协程池
  • 第八章:排序
  • 高速隔直电容设计
  • 【Vue】v-model进阶+ref+nextTick
  • 计算机是怎么跑起来的第五章
  • Python3 学习(菜鸟)-02基本数据类型
  • 从 PPO、DPO 到 GRPO:大语言模型策略优化算法解析
  • HarmonyOS 布局优化
  • 【Zephyr 系列 24】设备日志、事件与远程调试机制设计:为每一块硬件留痕,助力稳定性分析
  • Cursor ReAct Agent技术架构
  • Python爬虫实战:研究RQ库相关技术
  • Modbus原理一文通:从基础到实现的全面解析
  • Python全栈开发:前后端分离项目架构详解
  • Nginx+keepalived主从,双主架构
  • Java大模型开发入门 (10/15):连接外部世界(下) - 端到端构建完整的RAG问答系统
  • 拓展:###单向循环链表###
  • 【MFC】编辑框、下拉框、列表控件
  • JavaScript基础-常用的鼠标事件
  • Bambu Studio 中的“回抽“与“装填回抽“的区别
  • Spark RDD 及性能调优
  • 案例:塔能科技智启某市光域,勾勒城市照明宏图
  • IEEE 802.16e 标准下的LDPC 码
  • 【知识图谱构建系列3】zero-shot的理念介绍
  • Vite 预构建机制深度解析(Vite缺点之一)