テキスト
作成者: 怡土順一, 最終変更者: 怡土順一, 最終変更リビジョン: 309, 最終変更日時: 2007-09-26 01:28:01 +0900 (水, 26 9月 2007)
■ テキストの描画
OpenCVにおいて,画像中にテキストを描画するのに関連する関数は, フォント構造体の初期化,文字列の描画,文字列の幅と高さの取得,の3つだけである.サンプル
テキストの描画 cvInitFont, cvPutText
フォントを初期化して,テキストを描画する
サンプルコード
#include <cv.h> #include <highgui.h> #include <time.h> int main (int argc, char **argv) { int i; IplImage *img; CvRNG rng = cvRNG (time (NULL)); CvScalar rcolor; int irandom; int font_face[] = { CV_FONT_HERSHEY_SIMPLEX, CV_FONT_HERSHEY_PLAIN, CV_FONT_HERSHEY_DUPLEX, CV_FONT_HERSHEY_COMPLEX, CV_FONT_HERSHEY_TRIPLEX, CV_FONT_HERSHEY_COMPLEX_SMALL, CV_FONT_HERSHEY_SCRIPT_SIMPLEX, CV_FONT_HERSHEY_SCRIPT_COMPLEX }; CvFont font[16]; // (1)画像を確保し初期化する img = cvCreateImage (cvSize (400, 500), IPL_DEPTH_8U, 3); cvZero (img); // (2)フォント構造体を初期化する for (i = 0; i < 16; i += 2) { cvInitFont (&font[i], font_face[i / 2], 1.0, 1.0); cvInitFont (&font[i + 1], font_face[i / 2] | CV_FONT_ITALIC, 1.0, 1.0); } // (3)フォントを指定して,テキストを描画する for (i = 0; i < 16; i++) { irandom = cvRandInt (&rng); rcolor = CV_RGB (irandom & 255, (irandom >> 8) & 255, (irandom >> 16) & 255); cvPutText (img, "OpenCV sample code", cvPoint (15, (i + 1) * 30), &font[i], rcolor); } // (4)画像の表示,キーが押されたときに終了 cvNamedWindow ("Text", CV_WINDOW_AUTOSIZE); cvShowImage ("Text", img); cvWaitKey (0); cvDestroyWindow ("Text"); cvReleaseImage (&img); return 0; }
// (1)画像を確保し初期化する
幅400,高さ500ピクセルの画像領域を確保し,初期化(ゼロクリア)する.
// (2)フォント構造体を初期化する
今回は,16種類のフォントと2種類の字体(ノーマル,イタリック)を指定して,フォント構造体を初期化する.
サイズの比率は,幅,高さ共に1.0.
// (3)フォントを指定して,テキストを描画する
関数cvPutText()を用いて,テキストの描画を行う.この際に,初期化したフォント構造体と,色を指定する.
また,OpenCV-1.0.0時点で利用できるフォントセットでは,日本語の描画はできない.
// (4)画像の表示,キーが押されたときに終了
画像を実際に表示し,何かキーが押されるまで待つ.