OpenCVでモノクロの画像(8bit1ch)の上に文字を書こうとすると、文字列の色にカラーを指定できない事から、文字を何色で描画しようとも、どうしても文字が見づらくなってしまいます。
(コード例)
char text[64] = "Imaging Solution";
CvFont font;
// 文字のフォント
cvInitFont (&font, CV_FONT_HERSHEY_DUPLEX, 0.7, 1.0, 0, 2);
// 文字の描画
cvPutText (src, text, cvPoint (15, 30), &font, CV_RGB (0, 0, 0));
(文字列の表示例)
文字を見えやすくするには、背景を塗りつぶすとか、文字に縁取りを付けるとか、考えられますが、割と単純な発想ですが、太めのフォント文字列を描画して、同じ場所に細めのフォントで同じ文字を描画すると、文字に輪郭が付くんじゃないか?という事でやってみた例↓
(コード例)
char text[64] = "Imaging Solution";
CvFont font;
CvFont outline_font;
// 輪郭用のフォント(太めのフォント)
cvInitFont (&outline_font, CV_FONT_HERSHEY_DUPLEX, 0.7, 1.0, 0, 8);
// 文字のフォント
cvInitFont (&font, CV_FONT_HERSHEY_DUPLEX, 0.7, 1.0, 0, 2);
// 輪郭の描画
cvPutText (src, text, cvPoint (15, 30), &outline_font, CV_RGB (255, 255, 255));
// 文字の描画
cvPutText (src, text, cvPoint (15, 30), &font, CV_RGB (0, 0, 0));
(文字列の表示例)
と、小ネタでした。
コメント