### Python OpenCV 圆、椭圆与任意多边形的绘制实例详解 #### 一、引言 在图像处理和计算机视觉领域,OpenCV 是一个非常强大的库,它提供了多种功能,包括图形和图像的基本操作。本文将详细介绍如何使用 Python 和 OpenCV 库来绘制圆、椭圆以及任意多边形。 #### 二、环境搭建 在开始之前,请确保安装了 Python 和 OpenCV。可以使用以下命令来安装 OpenCV: ```bash pip install opencv-python ``` 接下来我们将分别探讨这三种基本形状的绘制方法。 #### 三、圆的绘制 在 OpenCV 中,`cv2.circle()` 函数用于绘制圆形。该函数的基本语法如下: ```python cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None) ``` **参数说明:** - `img`: 必选参数。目标图像。 - `center`: 必选参数。圆心坐标,格式为 `(x, y)`。 - `radius`: 必选参数。圆的半径。 - `color`: 必选参数。圆的颜色,格式为 `(B, G, R)`。 - `thickness`: 可选参数。圆的厚度;如果为负数,则绘制实心圆。 - `lineType`: 可选参数。线条类型,默认为 `cv2.LINE_8`,还可以选择 `cv2.LINE_4` 或 `cv2.LINE_AA`(抗锯齿)。 - `shift`: 可选参数。坐标精度位移量,默认为 0。 **示例代码:** ```python import cv2 import numpy as np # 创建空白图像 image = np.zeros((400, 400, 3), np.uint8) # 绘制红色圆圈 cv2.circle(image, (200, 200), 50, (0, 0, 255), 2) # (200, 200) 为中心点坐标,50 为半径,(0, 0, 255) 为颜色,2 为线条宽度 cv2.imshow('Circle', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 四、椭圆的绘制 使用 `cv2.ellipse()` 函数可以绘制椭圆。该函数的基本语法如下: ```python cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None) ``` **参数说明:** - `img`: 必选参数。目标图像。 - `center`: 必选参数。椭圆的中心坐标,格式为 `(x, y)`。 - `axes`: 必选参数。椭圆的轴长,格式为 `(major_axis, minor_axis)`,其中 `major_axis` 表示主轴长度,`minor_axis` 表示次轴长度。 - `angle`: 必选参数。椭圆的旋转角度(以度为单位),顺时针方向为正。 - `startAngle`: 必选参数。椭圆弧的起始角度(以度为单位)。 - `endAngle`: 必选参数。椭圆弧的结束角度(以度为单位)。 - `color`: 必选参数。椭圆的颜色,格式为 `(B, G, R)`。 - `thickness`: 可选参数。椭圆的厚度;如果为负数,则绘制实心椭圆。 - `lineType`: 可选参数。线条类型,默认为 `cv2.LINE_8`,还可以选择 `cv2.LINE_4` 或 `cv2.LINE_AA`(抗锯齿)。 - `shift`: 可选参数。坐标精度位移量,默认为 0。 **示例代码:** ```python import cv2 import numpy as np # 创建空白图像 image = np.zeros((400, 400, 3), np.uint8) # 绘制绿色椭圆 cv2.ellipse(image, (200, 200), (100, 150), 0, 30, 360, (0, 255, 0), -1) # (200, 200) 为中心点坐标,(100, 150) 为主次轴长度,0 为旋转角度,30 为起始角度,360 为结束角度,(0, 255, 0) 为颜色,-1 为实心 cv2.imshow('Ellipse', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 五、任意多边形的绘制 对于任意多边形,OpenCV 提供了 `cv2.polylines()` 函数来绘制。该函数的基本语法如下: ```python cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None) ``` **参数说明:** - `img`: 必选参数。目标图像。 - `pts`: 必选参数。一个多边形顶点坐标的数组列表。 - `isClosed`: 必选参数。布尔值,指定多边形是否封闭。 - `color`: 必选参数。多边形的颜色,格式为 `(B, G, R)`。 - `thickness`: 可选参数。线条厚度;如果为负数,则绘制实心多边形。 - `lineType`: 可选参数。线条类型,默认为 `cv2.LINE_8`,还可以选择 `cv2.LINE_4` 或 `cv2.LINE_AA`(抗锯齿)。 - `shift`: 可选参数。坐标精度位移量,默认为 0。 **示例代码:** ```python import cv2 import numpy as np # 创建空白图像 image = np.zeros((400, 400, 3), np.uint8) # 定义多边形顶点坐标 points = np.array([[150, 50], [140, 140], [200, 170], [250, 250]], np.int32) # 绘制蓝色多边形 cv2.polylines(image, [points], True, (255, 0, 0)) cv2.imshow('Polygon', image) cv2.waitKey(0) cv2.destroyAllWindows() ``` #### 六、总结 通过本文,我们详细介绍了如何使用 Python 和 OpenCV 来绘制圆、椭圆以及任意多边形。这些基本图形的绘制对于图像处理和计算机视觉任务来说是非常重要的基础。掌握这些技巧可以帮助开发者更好地理解和实现复杂的图像处理算法。 以上就是本次介绍的全部相关知识点,感谢大家的学习和对我们的支持。
- 粉丝: 5
- 资源: 956
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 可直连数据库,找到存在可疑推荐关系字段的表绘制推荐关系层级信息
- 根据excel表格快速制作层级信息工具(线下传销)不包含其他信息,只有层级信息,其他信息添加需要自己添加,理论上问题不大
- 基于MATLAB车牌识别系统实现系统【GUI含界面】.zip
- 基于MATLAB车牌识别系统【含界面GUI】.zip
- 技术资料分享MMCSDTimming很好的技术资料.zip
- 技术资料分享MMC-FAT16-File-System-Specification-v1.0很好的技术资料.zip
- 技术资料分享MDk如何生成bin文件很好的技术资料.zip
- 根据已有层级及个人信息绘制层级
- 技术资料分享Keil用户手册很好的技术资料.zip
- 基于MATLAB车牌识别技术实现技术实现【带界面GUI】.zip