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为复杂字体,可按需替换。
相关推荐
Aliex_git几秒前
跨域请求笔记
前端·网络·笔记·学习
tritone几秒前
使用阿贝云免费云服务器学习Vagrant,是一次非常顺畅的体验。作为一名开发者
服务器·学习·vagrant
2501_901147835 分钟前
面试必看:优势洗牌
笔记·学习·算法·面试·职场和发展
一战成名99627 分钟前
深度解析 CANN 模型转换工具链:从 ONNX 到 OM
人工智能·学习·安全·开源
Yu_Lijing1 小时前
网络复习篇——网络基础(一)
网络·c++·笔记
南极星10051 小时前
我的创作纪念日--128天
java·python·opencv·职场和发展
蒸蒸yyyyzwd1 小时前
分布式算法学习笔记1.1-1.4
笔记·学习
匆匆那年9671 小时前
llamafactory推理消除模型的随机性
linux·服务器·学习·ubuntu
好好学习天天向上~~1 小时前
5_Linux学习总结_vim
linux·学习·vim
笨笨阿库娅1 小时前
从零开始的算法基础学习
学习·算法