Opencv入门---绘图篇

目录

一、cv.line()

二,cv.cricle()

三,cv2.rectangle()


一、cv.line()

cv.line()是 OpenCV 库中用于在图像上绘制直线的函数。它可以在图像上绘制一条直线,指定直线的起始点和结束点。

函数的语法如下:

python 复制代码
cv.line(img, pt1, pt2, color, thickness=1, lineType=8, shift=0)
  • img:图像数据
  • pt1:直线的起始点
  • pt2:直线的终止点
  • color:直线的颜色
  • thickness:直线的粗细,如果为负值则为填充直线
  • lineType:直线的类型,可以是 4、8 或者 16
  • shift:点坐标中的小数位数
python 复制代码
import cv2

# 创建一个黑色的图像


img = cv2.imread('咒术回战.jpg')
#调整图片大小
new_size = (800, 600)
img = cv2.resize(img, new_size)
# 绘制一条红色的对角线,从左上角到右下角
cv2.line(img, (0, 0), (img.shape[1], img.shape[0]), (255, 0, 255), 3)

# 显示图像
cv2.imshow('Line', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 等待按键,然后关闭窗口  
cv2.waitKey(0)  
cv2.destroyAllWindows()

效果如上图

二,cv.cricle()

cv.circle()函数用于在任何图像上绘制圆。其参数如下:

python 复制代码
cv.circle(image, center, radius, color, thickness, lineType)
  • image:要绘制圆的图像
  • center:圆的中心坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)
  • radius:圆的半径
  • color:圆的边界线的颜色。对于 BGR 图像,使用一个元组。例如:(255,0,0)为蓝色
  • thickness:圆边界线的粗细(像素)。厚度 -1 像素将以指定的颜色填充矩形形状。
  • lineType:圆边界线的类型。可以是 8 位无符号整数,在官方文档中可以找到其详细信息。
python 复制代码
import cv2

# 读取图片
img = cv2.imread("image.jpg")

# 绘制圆
cv2.circle(img, (100, 100), 50, (0, 255, 0), 5)

# 显示图片
cv2.imshow("Image", img)

# 等待用户按下任意键
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

三,cv2.rectangle()

cv2.rectangle()函数用于在任何图像上绘制矩形,

python 复制代码
cv2.rectangle(img, pt1, pt2, color, thickness=1, lineType=8)

其参数如下:

  • img:要绘制矩形的图像
  • pt1:矩形的左上角坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)
  • pt2:矩形的右下角坐标
  • color:矩形的边界线的颜色。对于 BGR 图像,使用一个元组。例如:(255,0,0)为蓝色
  • thickness:矩形边界线的粗细(像素)。厚度 -1 像素将以指定的颜色填充矩形形状。
  • lineType:矩形边界线的类型。可以是 8 位无符号整数,在官方文档中可以找到其详细信息。
python 复制代码
import cv2

# 读取图片
img = cv2.imread('image.jpg')

# 绘制矩形
cv2.rectangle(img, (100, 100), (200, 200), (0, 0, 255), -1)

# 显示图片
cv2.imshow('Image', img)

# 等待用户按下任意键
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

四, cv.ellipse()

cv.ellipse() 是 OpenCV 中用于在图像上绘制椭圆形的函数。以下是这个函数的基本语法和一些参数的解释:

python 复制代码
cv.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness, lineType, shift)

参数解释:

  • img:要在其上绘制椭圆的图像。
  • center:椭圆中心的坐标,通常是一个包含两个元素的元组,如 (x, y)
  • axes:椭圆长轴和短轴的一半长度,通常是一个包含两个元素的元组,如 (width/2, height/2)
  • angle:椭圆长轴的旋转角度,以度为单位。
  • startAngle:椭圆弧的起始角度,以度为单位。
  • endAngle:椭圆弧的结束角度,以度为单位。
  • color:椭圆的颜色。对于 BGR,它通常是一个元组,例如 (255, 0, 0) 表示蓝色。
  • thickness:线条的粗细,以像素为单位。如果设置为 cv2.FILLED,则椭圆会被填充。
  • lineType:线条的类型。例如,cv2.LINE_8cv2.LINE_AA 等。这个参数通常是可选的。
  • shift:点坐标中的小数位数。这个参数通常也是可选的。

以下是一个使用 cv.ellipse() 的简单示例:

python 复制代码
import cv2 as cv  
import numpy as np  
  
# 创建一个黑色的图像  
img = np.zeros((512, 512, 3), dtype=np.uint8)  
  
# 定义椭圆的中心和轴长  
center = (256, 256)  # 椭圆中心在图像中心  
axes = (200, 100)  # 椭圆长轴和短轴的一半长度  
  
# 定义椭圆的角度和其他参数  
angle = 30  # 椭圆长轴旋转30度  
startAngle = 0  # 椭圆弧的起始角度  
endAngle = 180  # 椭圆弧的结束角度  
color = (255, 0, 0)  # 蓝色  
thickness = 2  # 线宽为 2 像素  
  
# 在图像上绘制椭圆  
cv.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness)  
  
# 显示图像  
cv.imshow("Image with Ellipse", img)  
  
# 等待按键,然后关闭窗口  
cv.waitKey(0)  
cv.destroyAllWindows()
相关推荐
一人の梅雨6 分钟前
大麦网关键词列表接口的产业级实现:从演出聚合到市场趋势预测的全维度技术方案
大数据·数据库·人工智能
阿_旭9 分钟前
基于深度学习的甲状腺结节智能检测分割与诊断系统【python源码+Pyqt5界面+数据集+训练代码】
人工智能·python·深度学习·甲状腺结节检测
woshihonghonga11 分钟前
PyTorch矩阵乘法函数区别解析与矩阵高级索引说明——《动手学深度学习》3.6.3、3.6.4和3.6.5 (P79)
人工智能·pytorch·python·深度学习·jupyter·矩阵
CLubiy12 分钟前
【研究生随笔】Pytorch中的线性代数(微分)
人工智能·pytorch·深度学习·线性代数·梯度·微分
美狐美颜SDK开放平台12 分钟前
直播美颜SDK功能开发实录:自然妆感算法、人脸跟踪与AI美颜技术
人工智能·深度学习·算法·美颜sdk·直播美颜sdk·美颜api
明朝百晓生1 小时前
强化学习【Monte Carlo Learning][MC Basic 算法]
人工智能·机器学习
AI云原生1 小时前
云原生系列Bug修复:Docker镜像无法启动的终极解决方案与排查思路
运维·服务器·python·docker·云原生·容器·bug
万粉变现经纪人3 小时前
如何解决 pip install -r requirements.txt 私有索引未设为 trusted-host 导致拒绝 问题
开发语言·python·scrapy·flask·beautifulsoup·pandas·pip
查士丁尼·绵4 小时前
笔试-九宫格三阶积幻方
python·九宫格·三阶积幻方
云知谷6 小时前
【C++基本功】C++适合做什么,哪些领域适合哪些领域不适合?
c语言·开发语言·c++·人工智能·团队开发