来自sobel(opencv)的打印输出垫

时间:2013-11-16 22:42:16

标签: c++ opencv

我想知道sobel输出中存储的变量的正确类型(在我的情况下为x)。当我运行此代码时

Mat x;
Sobel( input, x, CV_32F, 1, 0);
for(int i=0;i<input.cols;i++){
    for(int j=0;j<input.rows;j++){
        printf("%f\n",x.at<float>(i,j));
    }
}

我得到像

这样的东西
213918711808.000000, 885887336448.000000 0.000000 0.000169 0.000000 

但是当我跑步时

Mat x;
Sobel( input, x, CV_32F, 1, 0);
std::cout<<x<<endl;

我得到了这个结果(这个是正确的)

2, 0, 2, 4, 2, -6, -4, 0, -6, -10, -10, -34, ...

1 个答案:

答案 0 :(得分:-1)

这是因为printf将%f视为double,而不是float。

我错了。我试图重现你的问题,两种类型的输出都给我一个正确的结果。检查x矩阵是否具有不同的大小或类型,CV_32F为5。

std::cout << x.type() << " " << x.rows << " " << x.cols << " " << std::endl;
std::cout << input.type() << " " << input.rows << " " << input.cols << " " << std::endl;