我正在使用OpenCV计算灰度图像的梯度,某些像素的结果值为负(但我无法在屏幕上打印它们)。
我的代码:
Mat gradX, kernelX, gray;
//i load an rgb image and convert it to grayscale here
gray.create(rows,cols,CV_32FC1);
kernelX = (Mat_<float>(1,3) << -1, 0, 1);
gradX.create(rows,cols,CV_32FC1);
filter2D(gray,gradX,-1, kernelX,cvPoint(-1, -1),0);
我尝试了这两种方法来打印gradX左上角5x5的值
方法1 (它会打印所有很小的值(例如1.23e-40等)):
for (int j=0; j<5;j++)
{
for (int i=0; i<5;i++)
{
cout<< (float)gradX.at<float>(j, i) << " ";
}
cout<< endl;
}
方法2 (可以正确打印正值,但所有负值均显示为“0”):
for (int j=0; j<5;j++)
{
uchar* data=gradX.ptr<uchar>(j);
for (int i=0; i<5;i++)
{
cout<< (float)data[i] << " ";
}
cout<< endl;
}
最佳答案
你为什么不
cout << gradX << endl;
?
关于c++ - 打印垫浮子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8618099/