资源简介
Ubuntu环境下,OpenCV通过链接freetype库,来支持中文显示。
代码片段和文件信息
#include
#include
#include
#include
#include
#include “CvxText.h“
// 打开字库
CvxText::CvxText(const char* freeType)
{
assert(freeType != NULL);
// 打开字库文件 创建一个字体
if(FT_Init_FreeType(&m_library)) throw;
if(FT_New_Face(m_library freeType 0 &m_face)) throw;
// 设置字体输出参数
restoreFont();
// 设置C语言的字符集环境
setlocale(LC_ALL ““);
}
// 释放FreeType资源
CvxText::~CvxText()
{
FT_Done_Face(m_face);
FT_Done_FreeType(m_library);
}
// 设置字体参数:
//
// font - 字体类型 目前不支持
// size - 字体大小/空白比例/间隔比例/旋转角度
// underline - 下画线
// diaphaneity - 透明度
void CvxText::getFont(int* type cv::Scalar* size bool* underline float* diaphaneity)
{
if (type) *type = m_fontType;
if (size) *size = m_fontSize;
if (underline) *underline = m_fontUnderline;
if (diaphaneity) *diaphaneity = m_fontDiaphaneity;
}
void CvxText::setFont(int* type cv::Scalar* size bool* underline float* diaphaneity)
{
// 参数合法性检查
if (type) {
if(type >= 0) m_fontType = *type;
}
if (size) {
m_fontSize.val[0] = std::fabs(size->val[0]);
m_fontSize.val[1] = std::fabs(size->val[1]);
m_fontSize.val[2] = std::fabs(size->val[2]);
m_fontSize.val[3] = std::fabs(size->val[3]);
}
if (underline) {
m_fontUnderline = *underline;
}
if (diaphaneity) {
m_fontDiaphaneity = *diaphaneity;
}
FT_Set_Pixel_Sizes(m_face (int)m_fontSize.val[0] 0);
}
// 恢复原始的字体设置
void CvxText::restoreFont()
{
m_fontType = 0; // 字体类型(不支持)
m_fontSize.val[0] = 20; // 字体大小
m_fontSize.val[1] = 0.5; // 空白字符大小比例
m_fontSize.val[2] = 0.1; // 间隔大小比例
m_fontSize.val[3] = 0; // 旋转角度(不支持)
m_fontUnderline = false; // 下画线(不支持)
m_fontDiaphaneity = 1.0; // 色彩比例(可产生透明效果)
// 设置字符大小
FT_Set_Pixel_Sizes(m_face (int)m_fontSize.val[0] 0);
}
// 输出函数(颜色默认为白色)
int CvxText::putText(cv::Mat& img char* text cv::Point pos)
{
return putText(img text pos CV_RGB(255 255 255));
}
int CvxText::putText(cv::Mat& img const wchar_t* text cv::Point pos)
{
return putText(img text pos CV_RGB(255255255));
}
int CvxText::putText(cv::Mat& img const char* text cv::Point pos cv::Scalar color)
{
if (img.data == nullptr) return -1;
if (text == nullptr) return -1;
int i;
for (i = 0; text[i] != ‘\0‘; ++i) {
wchar_t wc = text[i];
// 解析双字节符号
if(!isascii(wc)) mbtowc(&wc &text[i++] 2);
// 输出当前的字符
putWChar(img wc pos color);
}
return i;
}
int CvxText::putText(cv::Mat& img const wchar_t* text cv::Point pos cv::Scalar color)
{
if (img.data == nullptr) return -1;
if (text == nullptr) return -1;
int i;
for(i = 0; text[i] != ‘\0‘; ++i) {
// 输出当前的字符
putWChar(img text[i] pos color);
}
return i;
}
// 输出当前字符 更新m_pos位置
void CvxText::putWChar(cv::Mat& img wchar_t wc cv::Point& p
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-10-29 03:36 chinese\
文件 3193 2018-08-23 02:17 chinese\CvxText.h
文件 9753284 2017-09-28 15:55 chinese\simhei.ttf
文件 5030 2018-08-23 02:16 chinese\CvxText.cpp
文件 58723 2018-10-29 03:26 chinese\demo.jpg
文件 1580 2018-10-29 03:32 chinese\main.cpp
文件 403 2018-10-29 03:25 chinese\CMakeLists.txt
目录 0 2018-10-29 03:32 chinese\.idea\
文件 11945 2018-10-29 03:32 chinese\.idea\workspace.xm
文件 97 2018-10-29 03:16 chinese\.idea\chinese.iml
文件 240 2018-10-29 03:16 chinese\.idea\misc.xm
文件 266 2018-10-29 03:14 chinese\.idea\modules.xm
文件 181 2018-10-29 03:29 chinese\.idea\encodings.xm
目录 0 2018-10-29 03:16 chinese\.idea\codest
文件 1775 2018-10-29 03:16 chinese\.idea\codest
- 上一篇:全志H3硬件设计资料
- 下一篇:软件工程导论学习辅导
相关资源
- 划痕缺陷检测
- 串口调试助手 vc 源代码
- 单USB双目摄像头拍摄程序
- RAAR相位恢复 opencv
- FTVd全变差去模糊opencv实现
- 全变差TV去噪(split bregman) opencv
- opencv开启本地摄像头并拍照
- 基于opencv的激光线中心提取源码
- opencv3.0 鱼眼标定校正 改进
- 旅行模拟查询系统
-
openfr
ameworks英文教程 - ORK教程(全)
- Ubuntu 扁平主题 Flatabulous-master
- 简单的一维高斯滤波程序
- FreeType 结合opencv在图像上显示中文程
- VS2010 用CxImage读入各种图片格式后在内
- Mastering OpenCV with Practical Computer Visio
- 程序员的自我修养(Epub)
- opencv计算机视觉编程攻略图片集
- 航空订票系统 设计题目、需求分析、
- Opencv安装过程中使用的vgg_generated_12
- opencv计算两平行线之间的距离
- 计算圆轮廓面积提取圆心
- 服务器截屏并使用socket发送给客户端
- Keras图像深度学习实战原版
- Windows网络编程第二版源码(补充材料
- 训练得到的900维 HOG特征-检测算子进行
- 学生管理系统(参考)
- 毕业设计-即时通信软件含论文
- msvcp120d .dll、msvcr120d.dll包括32位和64位
评论
共有 条评论