声明一个 cv::Mat of NaN

use*_*792 2 c++ opencv image-processing nan mat

在 OpenCV 中,我试图声明 acv::Mat并使用 NaN 值对其进行初始化。有点类似于:

myMat = Mat(nrows, ncols, CV_8UC1, cv::Scalar(0));
Run Code Online (Sandbox Code Playgroud)

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

cha*_*pjc 5

整数类型没有 NaN,但根据您的 C++ 编译器,您可能有 NaNfloatdouble数据(CV_32FCV_64F)。使用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));
Run Code Online (Sandbox Code Playgroud)