• 締切済み

なぜか,答えが出ません.

まず,下記のプログラムをみてもらいたんですが,(OpenCVを使ってます.) int main(void){ double hyouka=0; IplImage *correct=cvLoadImage("19.bmp",0); fujita_t("19.jpg",27,27,1.414,1.414,4,0.25,50,0,24,24); IplImage *dst=cvLoadImage("i_plus.bmp",0); int count_all=0; int count_correct=0; for(int i=0; i<dst->height; i++){ for(int j=0; j<dst->width; j++){ if(dst->imageData[i*dst->widthStep+j]==correct->imageData[i*correct->widthStep+j]){ count_correct++; } count_all++; } } hyouka = (double)count_correct / (double)count_all; printf("評価値:%6.3d%\n",hyouka); return 0; } これは,原画像に画像処理をかけた結果画像(dst)と,原画像から必要なものだけを抽出した正解画像(correct)を比較して,全画像における画素の整合率を評価値としたものです. しかし,答えをみると 「評価値:1541606928%」 とでます. 中身を調べると, count_correctは88320 count_allは90000 と出て,端末には「評価値:98.133%」とでてもいいはずなんですが… 原因が判る方,よろしくお願いします. ちなみにfujita_tというのは,画像処理手法のパラメータです.

みんなの回答

  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

そりゃぁ無理ってもんです・・・ > printf("評価値:%6.3d%\n",hyouka); を printf("評価値:%6.3lf%\n",hyouka); に変更しましょう。 ※ %dは整数を指定する書式指定子です。それなのに倍精度実数で宣言されているhyoukaを与えています。

関連するQ&A