加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 过滤OpenCV Mat以获取NAN值

发布时间:2020-12-16 10:05:10 所属栏目:百科 来源:网络整理
导读:有没有直接的方法来创建一个掩码,其中cv :: Mat_ double中的值与NAN比较? cv::Mat_real mat = ...cv::Mat_uchar mask = (mat == NAN); 不起作用,因为f == NAN总是假,即使f被指定为NAN.对于矩阵来说似乎没有isnan()的重载. 解决方法 如用户pSoLT所述,如果要
有没有直接的方法来创建一个掩码,其中cv :: Mat_< double>中的值与NAN比较?

cv::Mat_<real> mat = ...
cv::Mat_<uchar> mask = (mat == NAN);

不起作用,因为f == NAN总是假,即使f被指定为NAN.对于矩阵来说似乎没有isnan()的重载.

解决方法

如用户pSoLT所述,如果要确定哪些值是NaN,只需将矩阵与自身进行比较即可.对于那些不相等的元素,那些元素将被视为NaN by the standard definition.您可以使用该逻辑创建一个新的掩码:

cv::Mat mask = cv::Mat(mat != mat);

这里的mat将是一个包含NaN值的矩阵,mask将是一个CV_8UC1(即uchar)类型矩阵,如果值为NaN,则每个元素为0xFF,否则为0x00.

这篇关于OpenCV论坛的帖子也可以提供帮助:http://answers.opencv.org/question/2221/create-a-mask-for-nan-cells/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读