找回密码
 立即注册
查看: 441|回复: 0

[其它] opencv-python库 cv2 图形绘制

[复制链接]

224

主题

0

回帖

773

积分

高级会员

积分
773
发表于 2024-7-10 14:42:21 | 显示全部楼层 |阅读模式
本帖最后由 御坂主机 于 2024-7-10 16:45 编辑

1. 引言
OpenCV是一个强大的计算机视觉库,广泛应用于图像处理、计算机视觉和机器学习等领域。OpenCV-Python是OpenCV库的Python接口,提供了丰富的功能。本文将详细介绍如何使用cv2模块中的绘图函数,包括cv2.line()、cv2.rectangle()、cv2.circle()、cv2.ellipse()、cv2.polylines()和cv2.putText(),以便在图像上进行各种图形的绘制。

1.1 图形绘制的意义
在图像处理中,绘制图形可以帮助我们标注、突出显示或者进行可视化分析。OpenCV提供的绘图函数可以方便地在图像上绘制各种基本图形,从而满足不同的需求。

2. 准备工作

2.1 安装OpenCV-Python
在开始之前,需要确保已经安装了OpenCV-Python库。可以使用以下命令进行安装

  1. pip install opencv-python
复制代码


2.2 导入必要模块
在使用OpenCV进行图形绘制之前,需要导入必要的模块

  1. import cv2
  2. import numpy as np
复制代码


3. 使用cv2.line()绘制直线

3.1 cv2.line()简介
cv2.line()函数用于在图像上绘制直线。其基本语法如下

  1. cv2.line(img, pt1, pt2, color, thickness)
复制代码


(1) img:要绘制直线的图像
(2) pt1:直线的起点坐标(x1, y1)
(3) pt2:直线的终点坐标(x2, y2)
(4) color:直线的颜色(BGR格式)
(5) thickness:直线的粗细(可选)

3.2 示例
在一张空白图像上绘制一条红色的直线

  1. img = np.zeros((512, 512, 3), np.uint8)
  2. cv2.line(img, (0, 0), (511, 511), (0, 0, 255), 5)
  3. cv2.imshow('Line', img)
  4. cv2.waitKey(0)
  5. cv2.destroyAllwindows()
复制代码


4. 使用cv2.rectangle()绘制矩形

4.1 cv2.rectangle()简介
cv2.rectangle()函数用于在图像上绘制矩形。其基本语法如下

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


(1) img:要绘制矩形的图像
(2) pt1:矩形的左上角坐标(x1, y1)
(3) pt2:矩形的右下角坐标(x2, y2)
(4) color:矩形的颜色(BGR格式)
(5) thickness:矩形边框的粗细(可选,-1表示填充矩形)

4.2 示例
在一张空白图像上绘制一个绿色的矩形

  1. img = np.zeros((512, 512, 3), np.uint8)
  2. cv2.rectangle(img, (100, 100), (400, 400), (0, 255, 0), 3)
  3. cv2.imshow('Rectangle', img)
  4. cv2.waitKey(0)
  5. cv2.destroyAllWindows()
复制代码


5. 使用cv2.circle()绘制圆形

5.1 cv2.circle()简介
cv2.circle()函数用于在图像上绘制圆形。其基本语法如下

  1. cv2.circle(img, center, radius, color, thickness)
复制代码


(1) img:要绘制圆形的图像
(2) center:圆心坐标(x, y)
(3) radius:圆的半径
(4) color:圆的颜色(BGR格式)
(5) thickness:圆边框的粗细(可选,-1表示填充圆形)

5.2 示例
在一张空白图像上绘制一个蓝色的圆形

  1. img = np.zeros((512, 512, 3), np.uint8)
  2. cv2.circle(img, (256, 256), 100, (255, 0, 0), -1)
  3. cv2.imshow('Circle', img)
  4. cv2.waitKey(0)
  5. cv2.destroyAllWindows()
复制代码


6. 使用cv2.ellipse()绘制椭圆

6.1 cv2.ellipse()简介
cv2.ellipse()函数用于在图像上绘制椭圆。其基本语法如下

  1. cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness)
复制代码


(1) img:要绘制椭圆的图像
(2) center:椭圆的中心坐标(x, y)
(3) axes:长轴和短轴的长度(长轴半径, 短轴半径)
(4) angle:椭圆的旋转角度
(5) startAngle:椭圆弧的起始角度
(6) endAngle:椭圆弧的终止角度
(7) color:椭圆的颜色(BGR格式)
(8) thickness:椭圆边框的粗细(可选,-1表示填充椭圆)

6.2 示例
在一张空白图像上绘制一个红色的椭圆

  1. img = np.zeros((512, 512, 3), np.uint8)
  2. cv2.ellipse(img, (256, 256), (200, 100), 0, 0, 180, (0, 0, 255), -1)
  3. cv2.imshow('Ellipse', img)
  4. cv2.waitKey(0)
  5. cv2.destroyAllWindows()
复制代码


7. 使用cv2.polylines()绘制多边形

7.1 cv2.polylines()简介
cv2.polylines()函数用于在图像上绘制多边形。其基本语法如下

  1. cv2.polylines(img, pts, isClosed, color, thickness)
复制代码


(1) img:要绘制多边形的图像
(2) pts:多边形的顶点坐标数组
(3) isClosed:是否闭合多边形
(4) color:多边形的颜色(BGR格式)
(5) thickness:多边形边框的粗细

7.2 示例
在一张空白图像上绘制一个黄色的三角形

  1. img = np.zeros((512, 512, 3), np.uint8)
  2. pts = np.array([[100, 100], [200, 100], [150, 200]], np.int32)
  3. pts = pts.reshape((-1, 1, 2))
  4. cv2.polylines(img, [pts], True, (0, 255, 255), 3)
  5. cv2.imshow('Polygon', img)
  6. cv2.waitKey(0)
  7. cv2.destroyAllWindows()
复制代码


8. 使用cv2.putText()绘制文本

8.1 cv2.putText()简介
cv2.putText()函数用于在图像上绘制文本。其基本语法如下

  1. cv2.putText(img, text, org, fontFace, fontScale, color, thickness)
复制代码


(1) img:要绘制文本的图像
(2) text:要绘制的文本字符串
(3) org:文本的左下角坐标(x, y)
(4) fontFace:字体类型(如cv2.FONT_HERSHEY_SIMPLEX)
(5) fontScale:字体大小
(6) color:文本的颜色(BGR格式)
(7) thickness:文本的粗细

8.2 示例
在一张空白图像上绘制一段绿色的文本

  1. img = np.zeros((512, 512, 3), np.uint8)
  2. cv2.putText(img, 'Hello, OpenCV!', (50, 256), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
  3. cv2.imshow('Text', img)
  4. cv2.waitKey(0)
  5. cv2.destroyAllWindows()
复制代码


9. 结论
通过本文的介绍,读者应该能够掌握使用cv2模块中的各种绘图函数,包括cv2.line()、cv2.rectangle()、cv2.circle()、cv2.ellipse()、cv2.polylines()和cv2.putText(),以便在图像上绘制各种基本图形。这些函数的灵活应用,可以满足各种图像处理和计算机视觉的需求。希望本文对大家在实际项目中有所帮助。






------------------------------------------------------------------------------------------------------------------------------------------

========  御 坂 主 机  ========

>> VPS主机 服务器 前沿资讯 行业发布 技术杂谈 <<

>> 推广/合作/找我玩  TG号 : @Misaka_Offical <<

-------------------------------------------------------------------------------------------------------------------------------------------


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-3 16:53 , Processed in 0.065765 second(s), 23 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表