使用される方は、ノーサポート完全自己責任でご利用ください。
改善要望やバグ報告はウェルカムですが、いつ修正されるかは全くわかりません。
フリーで商用利用も何をしても文句言いませんが、一応著作権は放棄しません。
再配布される方は出所をどこかに明記してください。
当方ブログ
注意
cvPutTextJP というクラスにしてます。 .h だけなので適当に include して使用してください。
コンストラクタでフォント種別とサイズと weight を指定できますが、デバッグしてません。
"メイリオ" だけ見てみました。実装はソース参照お願いします。
また#include #pragma commen 等は適宜環境に合わせて修正して下さい。
中身はビットマップを取得してシコシコ書いてるだけですので、大きい文字サイズだと速度が落ちると思います。
説明 ( チョー簡単ですが・・・)
//
// cv::Mat をはみ出した時の挙動を指定する
//
enum JP_WRAP_TYPE {
JP_WRAP_VOID, // はみ出し部分は何もしません
JP_WRAP_CR }; // はみ出したら、なんちゃって改行します
//
// コンストラクタ
//
// std::string &_fontName = "メイリオ" フォントフェースを指定します
// int _fontSize = 32 フォントサイズを指定します
// int _weight = 0 フォントの幅(?)を指定します
// windows.h での参考
// FW_DONTCARE = 0;
// FW_THIN = 100;
// FW_NORMAL = 400;
// FW_BOLD = 700;
// CV_JP_WRAP_TYPE _wrapType = CV_JP_WRAP_VOID
// cv::Mat をはみ出した時の挙動を指定します
// int _gray = GGO_GRAY8_BITMAP
// グリフの諧調指定 GGO_GRAY8_BITMAPしか確認してません
//
cvPutTextJP(
const std::string &_fontName = "メイリオ",
const int _fontSize = 32,
const int _weight = 0,
const JP_WRAP_TYPE _wrapType = JP_WRAP_VOID,
const int _gray = GGO_GRAY8_BITMAP );
//
// 行の高さを取得します
//
int getBaselineDistance();
//
// 文字の出力幅を取得
//
int getCharWidth( const TCHAR *c );
//
// 文字位置を設定する
//
// cv::Point2i pos 文字の左上座標
//
// 表示位置の Point2i pos は文字列の左上の指定です。OpenCV の putText() は
// 左下がデフォールトのようですが、面倒くさいので左上オンリーです。
//
void setLocate( cv::Point2i pos );
//
// 1文字描画
//
// cv::Mat &mat 書込み対象の画像を指定します 現在は CV_8UC3 のみ
// TCHAR *c 書き込む文字列です
// cv::Scalar sc 出力色を指定します
//
// return: true == 補正した、またははみ出すから描画しなかった
// false == 問題なし
//
bool putChar( cv::Mat &mat, TCHAR *c, cv::Scalar sc, int _gray = GGO_GRAY8_BITMAP );
//
// 文字列の出力幅を取得
//
int getTextWidth( TCHAR *c );
//
// 文字列描画
//
// cv::Mat &mat 書込み対象の画像を指定します 現在は CV_8UC3 のみ
// TCHAR *c 書き込む文字列です
// cv::Scalar sc 出力色を指定します
//
void putText( cv::Mat &mat, TCHAR *c, cv::Scalar sc, int _gray = GGO_GRAY8_BITMAP );
ご利用される方はコメントいただけると嬉しいです〜