資源簡介
OpenCV兩種方法顯示中文(一種配置CvxText和FreeType庫,一種不需要配置庫),默認(rèn)環(huán)境VS2012+OpenCV249。
代碼片段和文件信息
#include???
#include???
#include???
#include???
#include?“Cv310Text.h“??
Cv310Text::Cv310Text(const?char?*freeType)
{
assert(freeType?!=?NULL);
//?打開字庫文件?創(chuàng)建一個字體??
if?(FT_Init_FreeType(&m_library))?throw;
if?(FT_New_Face(m_library?freeType?0?&m_face))?throw;
//?設(shè)置字體輸出參數(shù)??
restoreFont();
//?設(shè)置C語言的字符集環(huán)境??
setlocale(LC_ALL?““);
}
//?釋放FreeType資源??
Cv310Text::~Cv310Text()
{
FT_Done_Face(m_face);
FT_Done_FreeType(m_library);
}
//?設(shè)置字體參數(shù):??
//??
//?font?????????-?字體類型?目前不支持??
//?size?????????-?字體大小/空白比例/間隔比例/旋轉(zhuǎn)角度??
//?underline???-?下畫線??
//?diaphaneity???-?透明度??
void?Cv310Text::getFont(int?*type?CvScalar?*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?Cv310Text::setFont(int?*type?CvScalar?*size?bool?*underline?float?*diaphaneity)
{
//?參數(shù)合法性檢查??
if?(type)
{
if?(type?>=?0)?m_fontType?=?*type;
}
if?(size)
{
m_fontSize.val[0]?=?fabs(size->val[0]);
m_fontSize.val[1]?=?fabs(size->val[1]);
m_fontSize.val[2]?=?fabs(size->val[2]);
m_fontSize.val[3]?=?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);
}
//?恢復(fù)原始的字體設(shè)置??
void?Cv310Text::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;??????//?旋轉(zhuǎn)角度(不支持)??
m_fontUnderline?=?false;???//?下畫線(不支持)??
m_fontDiaphaneity?=?1.0;???//?色彩比例(可產(chǎn)生透明效果)??
???//?設(shè)置字符大小??
FT_Set_Pixel_Sizes(m_face?(int)m_fontSize.val[0]?0);
}
//?輸出函數(shù)(顏色默認(rèn)為黑色)??
int?Cv310Text::putText(cv::Mat?&frame?const?char????*text?CvPoint?pos)
{
return?putText(frame?text?pos?CV_RGB(255?255?255));
}
int?Cv310Text::putText(cv::Mat?&frame?const?wchar_t?*text?CvPoint?pos)
{
return?putText(frame?text?pos?CV_RGB(255?255?255));
}
//??
int?Cv310Text::putText(cv::Mat?&frame?const?char????*text?CvPoint?pos?CvScalar?color)
{
if?(frame.empty())?return?-1;
if?(text?==?NULL)?return?-1;
//??
int?i;
for?(i?=?0;?text[i]?!=?‘\0‘;?++i)
{
wchar_t?wc?=?text[i];
//?解析雙字節(jié)符號??
if?(!isascii(wc))?mbtowc(&wc?&text[i++]?2);
//?輸出當(dāng)前的字符??
putWChar(frame?wc?pos?color);
}
return?i;
}
int?Cv310Text::putText(cv::Mat?&frame?const?wchar_t?*text?CvPoint?pos?CvScalar?color)
{
if?(frame.empty())?return?-1;
if?(text?==?NULL)?return?-1;
//??
int?i;
for?(i?=?0;?text[i]?!=?‘\0‘;?++i)
{
//?輸出當(dāng)前的字符??
putWChar(frame?text[i]?pos?color);
}
return?i;
}
//?輸出當(dāng)前字符?更新m_pos位置??
void?Cv310Text::putWChar(cv::Mat?&frame?wchar_t?wc?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????177628??2015-11-15?13:24??1.jpg
?????文件????????4524??2017-10-07?16:21??Cv310Text.cpp
?????文件????????4226??2016-11-11?18:05??Cv310Text.h
?????文件????????5103??2017-10-07?14:58??CvxText.cpp
?????文件????????4988??2017-10-07?15:09??CvxText.h
?????文件????????1259??2016-12-26?15:11??OpenCV2.4.9Debug.props
?????文件????????1240??2017-01-01?20:36??OpenCV2.4.9Release.props
?????文件????42860544??2017-10-07?16:29??OpenCVTest.sdf
?????文件?????????886??2016-12-26?15:00??OpenCVTest.sln
?????文件????????3663??2017-10-07?15:34??OpenCVTest.vcxproj
?????文件????????1337??2017-10-07?15:34??OpenCVTest.vcxproj.filters
?????文件?????????772??2017-10-07?15:52??freeType2_6_2_Release.props
?????文件????????2066??2017-10-07?16:48??main.cpp
?????文件????????4249??2017-10-07?15:13??putText.cpp
?????文件?????????383??2017-10-07?15:13??putText.h
?????文件????10576012??2016-07-17?06:33??simfang.ttf
?????目錄???????????0??2017-10-07?16:46??配置請先看這里\
?????文件?????2402662??2017-10-07?16:44??配置請先看這里\【方法一:需配置庫】OpenCV?顯示中文漢字,未使用CvxText和FreeType庫?-?wanggao_1990的.png
?????文件?????4113345??2017-10-07?16:44??配置請先看這里\【方法二:不需要配置庫】基于OpenCV?2.4.9?3.1的漢字顯示(FreeType?2.6.2)?-?綜合編程類其他綜.png
評論
共有 條評論