Opencv 学习笔记:图像绘制(直线 / 圆 / 椭圆 / 矩形 / 多边形 + 文字添加)

OpenCV 提供了丰富的绘图 API,可快速在图像上绘制基础图形并添加文字标注。本文通过一站式代码示例,演示直线、圆、椭圆、矩形、多边形的绘制及文字添加方法,新手可直接套用。

核心代码实现

python 复制代码
import cv2 as cv
import numpy as np
# 1. 读取图像
src = cv.imread(".\image\1.bmp")
cv.imshow('intimage', src)
green = (0, 255, 0)  # OpenCV中颜色为BGR格式,此处为绿色
# 2. 绘制直线:起点(0,0) → 终点(300,300),绿色
cv.line(src, (0, 0), (300, 300), green)
# 3. 绘制矩形:左上角(0,0) → 右下角(100,100),绿色,线宽5(-1为填充)
cv.rectangle(src, (0, 0), (100, 100), green, 5)
# 4. 绘制圆形:圆心(图像中心),半径100,绿色
cv.circle(src, (src.shape[0]//2, src.shape[1]//2), 100, green)
# 5. 绘制椭圆:中心(图像中心),长轴200、短轴100,角度0-360,绿色,线宽3
cv.ellipse(src, (src.shape[0]//2, src.shape[1]//2), (100, 200), 0, 0, 360, green, 3)
# 6. 绘制多边形:顶点坐标重塑后闭合绘制
pts = np.array([[10, 20], [20, 50], [60, 70], [80, 90]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(src, [pts], True, green)
# 7. 添加文字:字体COMPLEX,大小2,绿色,线宽2
font = cv.FONT_HERSHEY_COMPLEX
cv.putText(src, 'integer', (src.shape[0]//2, src.shape[1]//2), font, 2, green, 2)
# 8. 显示结果
cv.imshow('outimage', src)
cv.waitKey(0)
cv.destroyAllWindows()

关键知识点解析

操作 核心参数说明
直线line (图像,起点,终点,颜色),默认线宽 1
矩形rectangle (图像,左上点,右下点,颜色,线宽),线宽 =-1 时填充矩形
圆形circle (图像,圆心,半径,颜色),圆心用//取整(图像尺寸为整数)
椭圆ellipse (图像,中心,(短轴,长轴), 旋转角,起始角,终止角,颜色,线宽)
多边形polylines 顶点数组需 reshape 为 (-1,1,2),True表示闭合多边形
文字putText (图像,文字内容,起始坐标,字体,大小,颜色,线宽),字体为预设常量

实用技巧

  1. 颜色适配:OpenCV 颜色为 BGR 格式,红色(0,0,255)、蓝色(255,0,0),需注意与 RGB 区别;
  2. 填充图形:所有绘图 API 的线宽参数设为-1,即可得到填充式图形(如实心圆、实心矩形);
  3. 坐标适配:用src.shape[0]//2(高)、src.shape[1]//2(宽)获取图像中心,适配任意尺寸图像;
  4. 字体调整:FONT_HERSHEY_SIMPLEX为简易字体,FONT_HERSHEY_COMPLEX为复杂字体,可按需替换。
相关推荐
Westward-sun.12 小时前
OpenCV 实战:银行卡号识别系统(基于模板匹配)
人工智能·opencv·计算机视觉
盐水冰12 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
Hello小赵12 小时前
视频压缩编码学习(一)—— 基础知识大集合
学习
左左右右左右摇晃12 小时前
计算机网络笔记整理
笔记·计算机网络
不吃西红柿的8512 小时前
[职场] 内容运营求职简历范文 #笔记#职场发展
笔记·职场和发展·内容运营
似水明俊德13 小时前
02-C#.Net-反射-学习笔记
开发语言·笔记·学习·c#·.net
智者知已应修善业13 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
adore.96813 小时前
3.18 复试学习
学习
C羊驼13 小时前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
留白_14 小时前
MySQL学习(9)——索引
学习