資源簡介
自己改寫的中文漢字寫入到圖片Mat的程序

代碼片段和文件信息
#include???
#include???
#include???
#include???
#include?“Cv310Text.h“??
Cv310Text::Cv310Text(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資源??
Cv310Text::~Cv310Text()
{
FT_Done_Face(m_face);
FT_Done_FreeType(m_library);
}
//?設置字體參數:??
//??
//?font?????????-?字體類型?目前不支持??
//?size?????????-?字體大小/空白比例/間隔比例/旋轉角度??
//?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)
{
//?參數合法性檢查??
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;
}
}
//?恢復原始的字體設置??
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;??????//?旋轉角度(不支持)??
m_fontUnderline?=?false;???//?下畫線(不支持)??
m_fontDiaphaneity?=?1.0;???//?色彩比例(可產生透明效果)??
???//?設置字符大小??
FT_Set_Pixel_Sizes(m_face?(int)m_fontSize.val[0]?0);
}
//?輸出函數(顏色默認為黑色)??
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];
//?解析雙字節符號??
if?(!isascii(wc))?mbtowc(&wc?&text[i++]?2);
//?輸出當前的字符??
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)
{
//?輸出當前的字符??
putWChar(frame?text[i]?pos?color);
}
return?i;
}
//?輸出當前字符?更新m_pos位置??
void?Cv310Text::putWChar(cv::Mat?&frame?wchar_t?wc?CvPoint?&pos?CvScalar?color)
{
//?根據unicode生成字體的二
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-11-11?18:07??Opencv顯示中文\
?????文件???????10143??2016-11-10?19:42??Opencv顯示中文\1.jpg
?????文件????????4471??2016-11-11?18:00??Opencv顯示中文\Cv310Text.cpp
?????文件????????4226??2016-11-11?18:05??Opencv顯示中文\Cv310Text.h
?????文件????10576012??2016-07-17?06:33??Opencv顯示中文\simfang.ttf
?????文件?????????388??2016-11-11?18:05??Opencv顯示中文\源.cpp
評論
共有 條評論