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

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

出错的地方编译不通过,出现“D:\opencv3_4_2\opencv\build\include\opencv2/core/traits.hpp(366): error C2039: “type”: 不是“cv::DataType”的成员
        with
          [
           T=cv::MatCommaInitializer_
        ] (编译源文件 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_(1, 1) << 1.0));  其中X为Mat类型,CV_32FC1,size为1*3,但这句话就是编译不过去。后来分开写成下面2条语句就编译通过:

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

 

你可能感兴趣的:(opencv)