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为复杂字体,可按需替换。
相关推荐
逑之9 小时前
C语言笔记13:数据在内存中的存储
c语言·开发语言·笔记
君鼎9 小时前
计算机网络第四章:网络层学习总结
学习·计算机网络
●VON9 小时前
绿色 AI:让智能计算与地球共生
人工智能·学习·安全·制造·von
数据轨迹0019 小时前
AAAI AMD:多尺度预测MLP反杀Transformer
经验分享·笔记·facebook·oneapi·twitter
Aliex_git9 小时前
性能优化 - Vue 日常实践优化
前端·javascript·vue.js·笔记·学习·性能优化
Yu_Lijing9 小时前
基于C++的《Head First设计模式》笔记——抽象工厂模式
c++·笔记·设计模式
创作者mateo9 小时前
PyTorch 入门学习笔记(实战篇)二
pytorch·笔记·学习
HuDie3409 小时前
因果推断与AB实验
笔记
小当家.1059 小时前
JVM八股详解(上部):核心原理与内存管理
java·jvm·学习·面试