声明一个NaN的cv :: Mat

时间:2015-01-06 18:31:15

标签: c++ opencv image-processing nan mat

在OpenCV中,我尝试声明cv::Mat并使用NaN值初始化它。有点类似于:

myMat = Mat(nrows, ncols, CV_8UC1, cv::Scalar(0));

但不是0,我喜欢NaN's。我怎样才能做到这一点?我应该为NaN值设置什么类型?

1 个答案:

答案 0 :(得分:3)

整数类型没有NaN,但根据您的C ++编译器,您可能拥有包含floatdouble数据(CV_32FCV_64F)的NaN。使用std::numeric_limits<T>::has_quiet_NaN()检查类型T是否具有NaN值,然后std::numeric_limits<T>::quiet_NaN()来获取值。

double dNaN = std::numeric_limits<double>::quiet_NaN();
cv::Mat myMat = Mat(nrows, ncols, CV_64F, cv::Scalar(dNaN));