首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cv::DataType<>与cv::traits::Type<>

cv::DataType<>与cv::traits::Type<>
EN

Stack Overflow用户
提问于 2018-02-19 09:01:31
回答 1查看 781关注 0票数 2

据我所知(不过,我找不到像样的文档),在OpenCV 3.3中,cv::DataTypecv::traits::Type<>取代了,所以要在两个版本上编译,我需要这样做:

代码语言:javascript
复制
template <typename T>
void f(cv::Mat &src)
{
    using DstPixel = cv::Vec<T, 3>;

    dst.create(src.rows,
               src.cols,
#if CV_VERSION_MAJOR >= 3 && CV_VERSION_MINOR >= 3
               cv::traits::Type<DstPixel>::value);
#else
               cv::DataType<DstPixel>::type);
#endif
}

这看起来有点混乱,而且看起来有点奇怪,一个小的版本变化没有向后兼容的路径。有没有一种更干净的方法来让代码在两个版本中都能编译?

(请注意,this answer也需要更新到cv::traits::Type<>)

EN

回答 1

Stack Overflow用户

发布于 2018-10-26 15:32:13

一种可能的解决方案是在项目OPENCV_TRAITS_ENABLE_DEPRECATED中的某处使用#define OPENCV_TRAITS_ENABLE_DEPRECATED或作为编译选项-DOPENCV_TRAITS_ENABLE_DEPRECATED进行定义。

如果定义了它,您可以在代码中继续使用旧的DataType结构:

代码语言:javascript
复制
cv::DataType<DstPixel>::type

然而,新的特征系统的引入是为了解决与DataType相关的一些问题。请参阅https://github.com/opencv/opencv/issues/10115

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48858328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档