Python OpenCV 图像绘制详解:点、圆、线、矩形、椭圆与文字

南乔
南乔
发布时间:2026-10-13| 3人浏览过
原创

本文详细介绍如何使用 Python 和 OpenCV 库在图像上绘制基本几何图形。涵盖画点、圆、直线、矩形、椭圆及多边形的具体函数用法与参数说明,包括颜色格式(BGR)、线条粗细、填充方式及字体设置。通过完整代码示例,演示如何在指定图像上实现多种绘图操作,并保存结果,适合初学者快速掌握 OpenCV 基础绘图功能。

OpenCV 图像绘制概述

本文详细讲解如何利用 Python 结合 OpenCV 库实现图像上的各种绘图操作。文中提供了详尽的代码示例,对学习和实际工作具有参考价值,建议读者结合实际需求进行尝试。

绘制点与圆形

绘制点与圆:

使用 cv2.circle() 函数绘制圆形,其完整参数定义为 circle(img, center, radius, color, thickness=None, lineType=None, shift=None)。各参数的具体含义如下:

  • img:指定要在其上绘制圆形的图像对象。
  • center:定义圆心的坐标位置,通常以元组形式表示 (x, y)。
  • radius:设定圆的半径大小。
  • color:指定圆边框或填充的颜色,OpenCV 默认采用 BGR(蓝、绿、红)通道顺序。
  • thickness:控制圆边框的宽度。若为正数,表示边框线条粗细;若为负数(如 -1),则表示填充整个圆形内部。
  • lineType:指定边框线的类型,可选值包括 0、4 或 8,分别对应不同的抗锯齿效果。
  • shift:定义圆心坐标和半径值的小数点位数,用于高精度定位。

绘制点的本质是绘制一个半径极小的实心圆。在实际操作中,可以在同一张图像及其副本上同时进行绘制,以对比效果。


import cv2
img = cv2.imread("500x400.jpg")
img1=cv2.circle(img,(60,60),30,(0,0,255),-1) #画一个红色实心圆
img1=cv2.circle(img1,(200,200),50,(255,0,0),3) #画一个蓝边框的圆
cv2.imwrite("linsi.jpg",img1)
cv2.waitKey(0)

注意:示例代码中同时在原图 img 和副本 img1 上进行绘制操作,以展示不同参数的效果。

最终生成的图像效果如下图所示:

绘制直线与矩形

绘制直线:


import cv2
img = cv2.imread("500x400.jpg")
img1=cv2.line(img,(10,10),(200,200),(0,255,0),3) #直线
#参数2 起点坐标;参数3 终点坐标;参数4 颜色;参数5 线条宽度

cv2.imwrite("linsi.jpg",img1)

cv2.waitKey(0)

绘制矩形:


import cv2
img = cv2.imread("500x400.jpg")
img1=cv2.rectangle(img,(10,10),(30,40),(255,0,0),2) #画矩形
#参数2 左上角坐标;参数3 右下角坐标;参数4 颜色;参数5 线条宽度
cv2.imwrite("linsi.jpg",img1)
cv2.waitKey(0)

绘制椭圆与多边形

绘制椭圆:


import cv2
img = cv2.imread("500x400.jpg")
img1=cv2.ellipse(img,(256,256),(100,50),0,30,180,(255,0,0),-1) # 画椭圆
#参数2 椭圆中心
#第三个参数 椭圆的长短轴的长度
#第四个参数 整个椭圆的偏转角度(顺时针)
#第五个参数 圆弧起始角的角度
#第六个参数 圆弧终结角的角度
# 圆弧角度->x轴方向为0,逆时针方向为正
#第七个参数 color 线条的颜色
#第八个参数  线条的粗细程度,如果是负数表示填充
#第九个参数  line_type 线条的类型 ???

cv2.imwrite("linsi.jpg",img1)
cv2.waitKey(0)

绘制多边形:

绘制多边形时需指定每个顶点的坐标,并使用 cv2.polylines() 函数。


import cv2
import numpy as np

img = cv2.imread("500x400.jpg")

points = np.array([[150,50],[140,140],[200,170],[250,250],[150,50]],np.int32) #多边形各顶点坐标
#数据类型必须是np.int32
points = points.reshape(-1,1,2)

img1=cv2.polylines(img,[points],True,(0,0,255),3) #画多边形
#参数2 各顶点
#参数3 True表示封闭,False表示不封闭
#参数4 颜色
#参数5 线条粗细

cv2.imwrite("linsi.jpg",img1)
cv2.waitKey(0)

添加文字标注

添加文字:


import cv2
import numpy as np
img = cv2.imread("500x400.jpg")
font=cv2.FONT_HERSHEY_SIMPLEX
font=cv2.FONT_HERSHEY_DUPLEX
img1=cv2.putText(img,'wo is liming',(80,90), font, 2,(255,255,255),3) #画文字
#参数3 位置
#参数5 字体大小
#参数7 线型
cv2.imwrite("linsi.jpg",img1)
cv2.waitKey(0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。