0
グレースケールイメージの白いピクセル数を計算する小さなプログラムを作った。同じプログラムで画像を2回開いた場合、私は別の結果が得られます。画素の輝度を表示する場合と同じですが、同じ画像であっても変化します。誰かが問題をどこに見たら助けてください。プログラム内で同じイメージに対して異なる結果が出る
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main()
{ int i=0,j,nbr=0,nbr1=0;
Mat image=imread("2_.png",CV_LOAD_IMAGE_GRAYSCALE);
Mat image2=imread("2_.png",CV_LOAD_IMAGE_GRAYSCALE);
for(i=0;i<image.rows;i++)
{
for(j=0;j<image.cols;j++)
{if (image.at<int>(i,j)!=0)
nbr++;
if (image2.at<int>(i,j)!=0)
nbr1++;
}
}
printf("%d\n %d\n",nbr,nbr1);
return 0;}
ありがとうございました。
これは理にかなっています。なぜなら、毎回intを読み込むと、最終的にバッファオーバーオーバーが発生するからです。バッファを越えて、データは完全にガーベッジです。 –
グレートポイント!! ... –
@JeruLukeあなたが編集して以来、英語は間違っています。今度は、 'int'が間違っているのではなくオプションであるように読んでいます。 – Galik