You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV(Python)生成图像添加图例的可行方法咨询

为OpenCV图像添加图例的替代方案

OpenCV本身没有内置的图例绘制函数,除了cv2.putText外,你可以试试以下两种更简便的方法:

方法1:结合Matplotlib绘制

既然用的是Python,可以把OpenCV的图像转成Matplotlib支持的格式,借助其自带的图例功能:

import cv2
import matplotlib.pyplot as plt

# 假设I是你的BGR格式图像
rgb_I = cv2.cvtColor(I, cv2.COLOR_BGR2RGB)  # OpenCV是BGR,Matplotlib用RGB

# 绘制图像和标记点
plt.imshow(rgb_I)
plt.scatter(xy[0], xy[1], c='blue', s=10, label='XY点')
plt.scatter(uv[0], uv[1], c='red', s=10, label='UV点')
plt.legend()
plt.show()

这种方法无需手动计算文本位置,Matplotlib会自动生成规整的图例。

方法2:手动绘制简易图例块

如果不想依赖Matplotlib,可以在图像角落绘制一个独立的图例区域,比逐个调用cv2.putText更高效:

import cv2
import numpy as np

# 创建白色背景的图例区域
legend_h, legend_w = 40, 120
legend = np.ones((legend_h, legend_w, 3), dtype=np.uint8) * 255

# 在图例上绘制标记点和对应文字
cv2.circle(legend, (15, 20), radius=1, c=(255,0,0), thickness=1)
cv2.putText(legend, 'XY点', (30, 23), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,0), 1)
cv2.circle(legend, (15, 35), radius=1, c=(0,0,255), thickness=1)
cv2.putText(legend, 'UV点', (30, 38), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,0), 1)

# 将图例拼接至原图像右上角(可调整位置)
I[0:legend_h, I.shape[1]-legend_w:I.shape[1]] = legend

# 显示图像
cv2.imshow('', I)
cv2.waitKey(0)
cv2.destroyAllWindows()

这种方法只需拼接一次图例区域,操作比单独给每个点加说明更省心,适配纯OpenCV的工作流。

你的OpenCV 4.1.2版本和Python 3.7.5环境完全兼容以上两种方案。

内容的提问来源于stack exchange,提问作者yonatan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:01:12