当我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] 范围内。因此,即使您分配了一个float
值,您也只能拥有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