作者在按照《学习OpenCV3》书上的代码编写时, 发现
cv::Mat m = cv::Mat::eye( 10, 10, cv::DataType<cv::Complexf>::type );
这一段代码报错,显示"type": 不是 "cv::DataType<T>" 的成员,点进声明发现type确实在成员里面啊,怎么回事呢
突然发现这个type成员被#if块过滤掉了,出现了OPENCV_TRAITS_ENABLE_DEPRECATED宏定义名称
查阅相关资料发现在OpenCV 3.3之后,cv::DataType类型就已经被cv::traits::Type<>替换了,DataType似乎被弃用了。
以前的写法是cv::DataType<cv::Complexf>::type,替换以后要这样写:traits::Type<Complexf>::value。
于是源代码改成了这样,问题解决
cv::Mat m = cv::Mat::eye( 10, 10, cv::traits::Type<cv::Complexf>::value );