cvSet2D()
次のように画像のピクセル値を設定するために使用すると:
Iplimage* image=cvLoadImage("....");
CvScalar scalar(0.1415, 0, 0, 0);
cvSet2D(image, 0,0,scalar);
double pixelValue=cvGet2D(image, 0, 0).val[0];
pixelValue
であることが判明しました0
。なんで?誰か解釈を教えてください。
cvSet2D()
次のように画像のピクセル値を設定するために使用すると:
Iplimage* image=cvLoadImage("....");
CvScalar scalar(0.1415, 0, 0, 0);
cvSet2D(image, 0,0,scalar);
double pixelValue=cvGet2D(image, 0, 0).val[0];
pixelValue
であることが判明しました0
。なんで?誰か解釈を教えてください。
8 ビット イメージ (フラグなしでロードする方法で 3 チャンネル) を扱っています。つまり、各チャンネルの値は [0, 255] の範囲にあります。したがって、値を割り当てても、0.1415float
しか持てないuchar
ため、0.1415 は 0 になります。
があれば、値float CvMat
を割り当てることができfloat
ます。例えば:
CvMat* matrix = cvCreateMat(10, 10, CV_32F);
CvScalar scalar(0.1415, 0, 0, 0);
cvSet2D(matrix, 5, 5, scalar);
double pixelValue = cvGet2D(matrix, 5, 5).val[0]; // Now pixelValue = 0.1415