当前位置: 首页 > news >正文

linux C++ opencv 绘制中文(源码编译opencv)

效果图:
在这里插入图片描述

第一步:安装 opencv 中文依赖

apt-get install libfreetype6-dev

第二步:在opencv编译时添加 WITH_FREETYPE=ON

完整编译示例:
调整编译内容

cmake -D CMAKE_BUILD_TYPE=RELEASE \-D WITH_FREETYPE=ON \..

开始编译

make -j8

安装到环境

make install

测试代码

项目结构,ttf一个就行
在这里插入图片描述
需要手动下载字体文件:.ttf文件
自己随便在网上下载就行

#include <opencv2/opencv.hpp>
#include <opencv2/freetype.hpp>
#include <iostream>int main() {// 初始化FreeType字体auto ft = cv::freetype::createFreeType2();// 使用指定的.ttf字体文件路径std::string font_path = "/root/UniSecurity/opencv_chiese/chiese_hei.ttf";try {ft->loadFontData(font_path, 0);} catch (...) {std::cerr << "字体加载失败,请检查路径是否正确: " << font_path << std::endl;return -1;}// 创建画布并绘制中文cv::Mat canvas(300, 500, CV_8UC3, cv::Scalar(255, 255, 255));// 绘制黑色中文 (BGR格式的黑色是(0,0,0))ft->putText(canvas, "中文测试", cv::Point(100, 200), 50, cv::Scalar(0, 0, 0),  // 明确设置为黑色 (B=0, G=0, R=0)-1, cv::LINE_AA, false);// 保存结果cv::imwrite("chinese_test.png", canvas);std::cout << "图像已保存为 chinese_test.png" << std::endl;return 0;
}

CMakeLists.txt 文件内容

#CMakeLists.txt
#  设置:版本
cmake_minimum_required(VERSION 3.20)# 定义 :项目名称
project(first_cmake)# 设置构建类型为 Debug
set(CMAKE_BUILD_TYPE "Release")set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")# 查找 OpenCV
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV version: ${OpenCV_VERSION}")
message(STATUS "OpenCV libraries: ${OpenCV_LIBS}")
message(STATUS "OpenCV include path: ${OpenCV_INCLUDE_DIRS}")# 变成执行程序
# 参数:项目名字、源码名字、
add_executable(first_cmake main.cpp)# 链接库,避免重复使用 PUBLIC 关键字
target_link_libraries(first_cmake${OpenCV_LIBS}
)

run.sh 脚本

# 进入项目目录
cd /root/UniSecurity/opencv_chiese
# 使用下面步骤代替第一步,原因是有些cmake版本不支持(-S -B)参数
rm -rf buildmkdir build && cd build && cmake .. && cd ../
# 下面一样
cmake --build build
./build/first_cmake

踩坑1

问题:中文显示了, 但在末尾有问号。
在这里插入图片描述
问题出自系统换行符上,win 和 linux的换行符是不一样的

cat -v 1.txt

查看发现文件末尾出现 ^M 符号
在这里插入图片描述
解决方法:使用工具转换一下

# 安装转换工具(如果未安装)
apt-get install dos2unix
# 转换文件格式(清除^M字符)
dos2unix 1.txt

文章转载自:

http://Fz3Xjz6q.qxnLc.cn
http://ZqFhtuPC.qxnLc.cn
http://SNVNP1V9.qxnLc.cn
http://zXcpStKV.qxnLc.cn
http://toMFP0Di.qxnLc.cn
http://Uq5PdTJj.qxnLc.cn
http://4X5ERRs8.qxnLc.cn
http://gZieQyHa.qxnLc.cn
http://R20XoP8C.qxnLc.cn
http://an2x4UcG.qxnLc.cn
http://ia4OiMVR.qxnLc.cn
http://LYyjwi87.qxnLc.cn
http://KQBjDMFN.qxnLc.cn
http://FBd1pM29.qxnLc.cn
http://tBKmg1e8.qxnLc.cn
http://gZDpz5y7.qxnLc.cn
http://AOpx7lLN.qxnLc.cn
http://yfRpJ5Sy.qxnLc.cn
http://dLL83VV5.qxnLc.cn
http://ONS39b6E.qxnLc.cn
http://5gjufzAc.qxnLc.cn
http://LhQhFqCC.qxnLc.cn
http://W7Z0LQLY.qxnLc.cn
http://aJjya6EO.qxnLc.cn
http://w570hkP5.qxnLc.cn
http://0CkmBuFa.qxnLc.cn
http://IJ2Dpab0.qxnLc.cn
http://e3huYFiB.qxnLc.cn
http://QHHyf86a.qxnLc.cn
http://3QJ1P0yC.qxnLc.cn
http://www.dtcms.com/a/388483.html

相关文章:

  • 线性回归到 Softmax 回归
  • Python实现剑龙优化算法 (Stegosaurus Optimization Algorithm, SOA)优化函数(付完整代码)
  • 微软开始在Win11上全屏打广告了,怎么关?
  • 深度学习-线性回归与 Softmax 回归
  • OpenCV:背景建模
  • JavaScript async/await 实战秘籍 异步编程技巧 + 避坑指南 秒杀 Promise then 链
  • Next.js动态配置实时预览方案
  • 讲讲对MoE的理解
  • OpenLayers数据源集成 -- 章节十七:KML图层详解:Google Earth数据格式的完整集成与交互式展示方案
  • LInux DMA fence与其他同步机制的对比分析
  • 【Windows端口管理】快速查看和释放被系统保留的TCP端口
  • LeetCode 2349.设计数字容器系统:双哈希表(要咋查就咋映射)
  • 使用webpack进行Gzip 压缩原理与影响详解
  • 一个基于Python PyQt5开发的渗透测试报告生成工具,用于快速生成专业的渗透测试报告。
  • 使用注解封装查询相关的功能
  • 电感边上加一横和加两横代表什么?
  • Python 0915
  • nvidia显卡架构列表
  • MySQL InnoDB存储引擎架构底层实现详细介绍
  • QT-UI 轮播窗口
  • Nginx动静分离实验步骤
  • 硬件驱动——I.MX6ULL裸机启动(7)(ADC相关设置)
  • 重读生成概率模型1----基础概念
  • File (文件)• Open (打开)•
  • DNS 服务原理与部署实战:从基础到主从架构搭建
  • 《黑夜君临》网络测试:XSX表现优于PS5及PS5 Pro
  • HDLBits-移位寄存器
  • C++宽度优先搜索算法(BFS算法):FloodFill问题模型
  • ThreadLocal 的工作原理
  • Windows 11 下载安装 CosyVoice2,一键启动