Python OpenCV 图像绘制详解:点、圆、线、矩形、椭圆与文字
本文详细介绍如何使用 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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









