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

如何在OpenCV C++的cv::Mat上绘制填充文本?

解决OpenCV C++绘制填充文本的问题

你之前的错误在于把cv::FILLED传给了lineType参数,但实际上控制文本填充的是thickness参数,lineType仅负责线条的渲染方式(如抗锯齿),和文本填充无关。

正确实现方式

将putText的thickness参数设置为cv::FILLED,即可实现真正的文本填充(无边框,完全填充内部):

cv::putText(img, "TEST", cv::Point(50, 150), cv::FONT_HERSHEY_DUPLEX, 3, CV_RGB(255, 255, 255), cv::FILLED);

如果需要让文本边缘更平滑,可以添加cv::LINE_AA作为lineType参数开启抗锯齿:

cv::putText(img, "TEST", cv::Point(50, 150), cv::FONT_HERSHEY_DUPLEX, 3, CV_RGB(255, 255, 255), cv::FILLED, cv::LINE_AA);

完整示例代码

#include <opencv2/opencv.hpp>

int main(){
    cv::Mat img = cv::Mat::zeros(300, 300, CV_8UC3);
    // 绘制完全填充的文本,开启抗锯齿
    cv::putText(img, "TEST", cv::Point(50, 150), cv::FONT_HERSHEY_DUPLEX, 3, CV_RGB(255, 255, 255), cv::FILLED, cv::LINE_AA);
    cv::imshow("test", img);
    cv::waitKey(0);
    return 0;
}

关键参数说明

  • thickness: 当取值为cv::FILLED时,会填充文本的整个内部区域,替代默认的边框绘制行为。
  • lineType: 使用cv::LINE_AA可以让文本边缘更柔和,避免锯齿感,不影响填充效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 09:51:31