2016-06-15 1 views
0

OpenCVを使用してテキストからイメージを作成しようとしています。イメージには、オーバーレイをマージする必要がある場合とない場合があります。テキストのフォントは、OpenCVのC++インターフェイスに付属するHERSHEYテキストと異なる必要があります。 this postなどで、cvFontQtとcvAddTextを使用して実行できることがわかりました。OpenCV:VS2015 x64ビルドでWindows 10でcvFontQtとcvAddTextでQtライブラリを使用するとテキストが表示されない

私はOpenCV 2.4.13とQt 5.6を使用しています。サンプルコードでIは出力cvFontQtcvAddTextを用いcvFontハーシーしかし第二線とcvPutTextを使用して第1行目と3行目は表示されませんことができ未満です。

#include "stdafx.h" 
#include "opencv2\core\core_c.h"   
#include "opencv2\highgui\highgui_c.h" 

int main() 
{ 
    // Create a window for a container to hold the image 
    cvNamedWindow("cvtest", CV_WINDOW_AUTOSIZE); 

    IplImage *img = cvCreateImage(cvSize(600, 300), IPL_DEPTH_64F, 4); 

    // Set the image background to white 
    cvSet(img, cvScalar(255, 255, 255)); 

    CvFont font; 

    cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5); 
    cvPutText(img, "cvInitFont; cvPutText: First line.", cvPoint(4, 30), &font, cvScalar(255)); 

    CvFont fontqt = cvFontQt("Courier New", -1, cvScalar(0,0,255), CV_FONT_NORMAL, CV_STYLE_NORMAL, 0); 
    cvAddText(img, "cvFontQV; cvAddText: Second line.", cvPoint(4, 60), &fontqt); 

    cvPutText(img, "cvInitFont; cvPutText: Third line.", cvPoint(4, 90), &font, cvScalar(255)); 

    cvShowImage("cvtest", img); 

    cvWaitKey(0); 

    cvSaveImage("C:\\OpenCvTest64F.jpg", img); 

    // Cleanup 
    cvDestroyAllWindows(); 
    cvReleaseImage(&img); 

    return 0; 
} 

得られた画像( "C:\ OpenCvTest64F.jpg"):

Output Image

私が誤っcvFontQt又はcvAddTextを使用していますか?それが画像に表示されない理由についての考えはありますか?

答えて

0

浮動小数点イメージを使用する具体的な理由は何ですか?そうでない場合に画像の初期設定を調整してみてください:

IplImage *img = cvCreateImage(cvSize(600, 300), IPL_DEPTH_8U, 3); 

3チャネルの8ビット画像の使用は、問題を修正するようです。

注 - 浮動小数点イメージに色を割り当てるとき、値は[0、255]ではなく[0、1]の範囲にある必要があります。また、C++ apiははるかに良いです!

+0

ありがとうございます!それがトリックでした。私はC++ apiがはるかに良いことに同意します。モノスペースのフォントが必要ない場合、私はそれを使用します。 – Tom

関連する問題