尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
全网首发:OSD字幕时,字体数据、间距的正确处理
比如说如果是巍宇这字好处理如果是一丨字体数据只有一行数据如何刷新处理间距又如何处理别担心。我这里有现成的代码。先看处理结果https://blog.csdn.net/quantum7/article/details/153679213FreeType字体加载这个各位想必很熟悉了。FT_Library m_pFTLib NULL; FT_Face m_pFTFace NULL; int m_iFontSize 16; FT_Init_FreeType(m_pFTLib); if (FT_New_Face(m_pFTLib, mFontFile, 0, m_pFTFace)) { WY_LOG_TEXT(FT_New_Face error!); return; } //FT_ENCODING_GB2312, FT_ENCODING_UNICODE FT_Select_Charmap(m_pFTFace, FT_ENCODING_UNICODE); FT_Set_Char_Size (m_pFTFace, 0, m_iFontSize6, 200, 200);加载字符插槽使用的是Slot而不是Glyph。因为代码是用于字幕字幕字符是固定的所以使用了一个std::map保存起来。static FT_GlyphSlot osd_load_char_glyph(const wchar_t wch, const FT_Face pFTFace) { FT_GlyphSlot wslot new FT_GlyphSlotRec(); int result FT_Load_Char( pFTFace, wch, FT_LOAD_RENDER ); FT_GlyphSlot slot pFTFace-glyph; memcpy(wslot, slot, sizeof(FT_GlyphSlotRec)); FT_Bitmap* bmp (slot-bitmap); int size bmp-rows*bmp-width; wslot-bitmap.buffer (unsigned char*)malloc(size); memcpy(wslot-bitmap.buffer, bmp-buffer, size); return wglyph; }正确处理数据及间距#define COLOR_TO_PIXEL(pixel, color, v, index) {int temp color.val[index]*v/0xFF; \ if (temp 0 color.val[index] ! 0) temp 1; \ pixel[index] temp; } #define COLOR_R_INDEX 2 #define COLOR_G_INDEX 1 #define COLOR_B_INDEX 0 void refresh(cv::Mat rgb, cv::Scalar color, int startX, int startY) { bool isBlack (color.val[0] 0 color.val[1] 0 color.val[2] 0); for (int i0; ithis-mTextCount; i) { wchar_t wch this-mText[i]; std::mapwchar_t, FT_GlyphSlot::iterator it mTextGlyphMap.find(wch); FT_GlyphSlot pSlot it-second; FT_Bitmap* pBmp (pSlot-bitmap); int osdWpBmp-width; int osdHpBmp-rows; int osdX startXpSlot-bitmap_left; //高度是pSlot-metrics.vertAdvance/64因为要绘制所以要减去 int osdY startY(pSlot-metrics.vertAdvance/64-pSlot-bitmap_top); for (int j0; josdH; j){ for (int i0; iosdW; i){ unsigned char v pBmp-buffer[osdW*ji]; if (v MIN_FONT_VALUE) { continue; } cv::Vec3b pixel rgb.atcv::Vec3b(osdYj, osdXi); if (isBlack) { v 0xFF-v; pixel[COLOR_B_INDEX] v; pixel[COLOR_G_INDEX] v; pixel[COLOR_R_INDEX] v; } else { COLOR_TO_PIXEL(pixel, color, v, COLOR_B_INDEX); COLOR_TO_PIXEL(pixel, color, v, COLOR_G_INDEX); COLOR_TO_PIXEL(pixel, color, v, COLOR_R_INDEX); } } } // 这个是正确宽度 startX pSlot-metrics.horiAdvance/64; } }
RELATED

相关推荐

抖音批量下载工具怎么用:一次配置,跑完整条作者主页

抖音批量下载工具怎么用:一次配置,跑完整条作者主页

抖音批量下载工具怎么用:一次配置,跑完整条作者主页 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallb…

📅 2026/10/11 5:16:49
openpilot 免费驾驶辅助系统:为什么它能改装 300+ 车型,以及如何用 3 步快速上手

openpilot 免费驾驶辅助系统:为什么它能改装 300+ 车型,以及如何用 3 步快速上手

openpilot 免费驾驶辅助系统:为什么它能改装 300 车型,以及如何用 3 步快速上手 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址:…

📅 2026/10/8 3:00:40
Visual Syslog Server 快速上手指南:如何在 Windows 上搭建免费的日志集中监控平台

Visual Syslog Server 快速上手指南:如何在 Windows 上搭建免费的日志集中监控平台

Visual Syslog Server 快速上手指南:如何在 Windows 上搭建免费的日志集中监控平台 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 如果你管理的网络…

📅 2026/10/7 10:37:20
MORE NEWS

更多资讯

📰

UI自动化下拉框定位却选不中?全套处理方案与实战经验

下拉框在UI自动化里是个老熟人,但很多人一碰到"元素明明定位到了,就是点不动/选不了"就卡住。特别是那种展开后才能看到选项、但选项又被遮挡或者隐藏的下拉框,直接用Selenium的Select类往往直接报错。这篇文章把我处理这类问题的完…

📰

AnyPS5:概念解析与合法技术边界探讨

项目标题中仅出现“AnyPS5”这一短语,无其他上下文、正文描述、关键词列表或摘要说明。根据全部约束条件与安全红线,我必须严格遵循以下原则进行响应:绝不虚构、不猜测、不编造:未提供任何有效输入信息(如项目正文、关…

📰

2026软件测试面试题大全:高频考点与答题逻辑深度拆解

每年到了招聘旺季,总有朋友跑来问我:“测试岗面试到底在考什么?背题有没有用?”说实话,市面上零零散散的面试题一大堆,但真正能把“题目背后的考察逻辑”讲明白的资料少之又少。这次整理的2026软件测试面试…

📰

同步发电机三相短路暂态计算:解析公式与Simulink仿真全解析

同步发电机的三相短路暂态计算,做电力系统保护的绕不开,做励磁、调速、电站设计的也会经常撞上它。刚入行时用短路电流表查曲线、按公式手算,后来用MATLAB/Simulink建模型,直接把暂态过程拉出来看波形,两套方法对着对照…

📰

DSH桌面版迁移指南:从命令行工具到产品级工作台

1. 项目概述:一次看似简单、实则牵一发而动全身的终端工具迁移“从 npm 版 dsh 迁移到 DSH 桌面版:彻底告别 dsh web”——这个标题乍看只是个版本升级通知,但在我过去十年维护上百个开发者工具链的过程中,它背后藏着一个被大量团…

📰

测试用例设计全攻略:从等价类到场景法,实战组合拳

软件开发这行做了十几年,其中有大半时间泡在测试领域。我见过太多测试新人甚至部分老手,拿到需求就闷头写用例,写出来的东西洋洋洒洒几百条,真正上线前评审一看,核心场景漏了,边界条件没覆盖,异…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬