在OpenCV中,我尝试声明cv::Mat
并使用NaN值初始化它。有点类似于:
myMat = Mat(nrows, ncols, CV_8UC1, cv::Scalar(0));
但不是0,我喜欢NaN's。我怎样才能做到这一点?我应该为NaN值设置什么类型?
答案 0 :(得分:3)
整数类型没有NaN,但根据您的C ++编译器,您可能拥有包含float
和double
数据(CV_32F
和CV_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));