2012-02-26 8 views
5

私はOpenCVで全く新しいです。私は数日前にLearing OpenCVを読み始めましたが、今はいくつかのテストをしたいと思います。OpenCV - cvPutTextが画像にノイズを追加しています

私はASCIIアートコンバーターをプログラムしたかったのです。私はイメージの繰り返しを行い、ピクセルを各四角でグループ化して各領域の明るさを計算し、それをそれぞれの文字に関連付けました。 これで、各画像領域を文字にリンクするには、文字がどれだけ明るいかを知る必要があります。 私の考えは、私にいくつかの文字の明るさを与える別のプログラムを作ることでした。手法は以下の通りである:

  • サイズの画像100 * 100(例えば)を作成 - 黒の背景及び1つのチャネル
  • 白色のどこかに文字を描画(cvPutText)
  • 反復私は私のプログラムはOKだと思いますが、私はちょうどそれをチェックするために...奇妙な結果を得ている結果

を正規化

  • 白画素数を画像と数え、私はそれぞれに画像を表示しています性格と性格奇妙なことが起きている。イメージは、私が何を話しているかを示しています。

    cvPutText() result

    これは私が使用していますコードです。(それは...場合に役立ちます)

    ... 
    char c = 'a'; //or whatever 
    IplImage *img = cvCreateImage(cvSize(150, 150), IPL_DEPTH_8U, 1); 
    
    char buffer[7]; 
    sprintf(buffer, "%c", c); 
    
    CvFont font; 
    cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5); 
    cvPutText(img, buffer, cvPoint(2, 15), &font, cvScalar(255)); 
    
    //iteration to calculate brightness will go here 
    
    cvNamedWindow(buffer); 
    cvShowImage(buffer, img); 
    cvMoveWindow(buffer, 50*(c-first), 20); 
    ... 
    

    私はMacOSのライオンに開発しています。 読んでいただきありがとうございました!

  • +0

    私はUbuntu 12.04でOpenCV 2.4を使用しています。あなたのコードスニペットを試しましたが、文字で画像を表示する際に問題は見られませんでした。あなたがcvPutText()の後に画像操作をしたのかどうか疑問に思っていますか? – zkan

    +2

    私はcvCreateImageがイメージを初期化していないと思う、あなたはcvSetを試してみた(img、cvScalar(0,0,0)); ? – Milo

    +0

    ご協力ありがとうございます。私はもうOpenCVを使用していませんが、これを実験し続けるためにはいつか時間があることを願っています。 –

    答えて

    1

    イメージコンテンツを初期化しませんでした。メモリを割り当てただけで、メモリガーベジが表示されました。

    画像を黒に設定するには、cvSet(img、cvScalarAll(0))を追加するだけです。

    +0

    ご協力いただきありがとうございます。私はしばらくの間、ソリューションをテストすることはできませんが、あなたの言うこと(そして1ヶ月前にもMiloによって言われました)は理にかなっています。だから私はあなたの答えを承認する。 –

    +0

    私はこのプロジェクトを最終的に取り戻しました。私はこれの非常に単純な最初のバージョンを終了しました。あなたのソリューションは素晴らしかったです!ありがとうございます(そして@Miloもあります) 結果が不思議なら、私はgithubページにアップロードしました:https://github.com/ricardperez/ASCIIArt –

    関連する問題