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为复杂字体,可按需替换。
相关推荐
red_redemption1 小时前
自由学习记录(175)
学习
ZhiqianXia2 小时前
《The Design of Design》阅读笔记
前端·笔记·microsoft
nashane2 小时前
HarmonyOS 6学习:画中画(PiP)状态同步与场景化实战指南
学习·pip·harmonyos·harmonyos 5
祁白_3 小时前
nmap工具笔记整理
笔记·web安全·测试
_李小白3 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
勤劳的进取家3 小时前
数据链路层基础
网络·学习·算法
南境十里·墨染春水3 小时前
C++笔记 STL——set
开发语言·c++·笔记
d111111111d3 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习
LZYmarks3 小时前
小白买车笔记
笔记
码途漫谈3 小时前
Easy-Vibe开发篇阅读笔记(二)——前端开发之Figma与MasterGo入门
人工智能·笔记·ai·开源·ai编程·figma