error C2039: “type”: 不是“cv::DataType<T>”的成员的解决方案

大家在使用OpenCV的时候经常会遇到各种各样的错误,对于一些简单的基本上能够从报错信息查找到原因,但是往往也会遇到很难发现错误的地方,因为C/C++是一种编译语言,不像python/matlab直接可以找到出错的地方。

出错的地方编译不通过,出现“D:\opencv3_4_2\opencv\build\include\opencv2/core/traits.hpp(366): error C2039: “type”: 不是“cv::DataType<T>”的成员
        with
          [
           T=cv::MatCommaInitializer_<float>
        ] (编译源文件 getSequence\SequenceRecognition.cpp)”

对于上面通用的解决方案有很多,但都不行,如:http://answers.opencv.org/question/183163/traitshpp-type-is-not-a-member-compilation-error/

https://github.com/ros-perception/image_pipeline/issues/308

我的解决方案是:对于新加的代码分段进行编译,找出出错的大致位置,直到准确定位错误语句。

最后错误的语句为:X.push_back((Mat_<float>(1, 1) << 1.0));  其中X为Mat类型,CV_32FC1,size为1*3,但这句话就是编译不过去。后来分开写成下面2条语句就编译通过:

Mat pushMat = (Mat_<float>(1, 1) << 1.0);
X.push_back(pushMat);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值