cv::D ataType<> 与 cv::traits::Type<>
cv::DataType<> versus cv::traits::Type<>
据我所知(但是我找不到像样的文档),在OpenCV 3.3中,cv::DataType
被cv::traits::Type<>
取代,所以要在两个版本上编译,我需要做这样的事情:
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
}
这看起来有点混乱,而且似乎有点奇怪,次要版本更改没有向后兼容性路径。有没有更简洁的方法让代码使用任一版本进行编译?
(注意这个答案也需要更新才能cv::traits::Type<>
)
一种可能的解决方案是在项目OPENCV_TRAITS_ENABLE_DEPRECATED
的某个位置定义 跟#define OPENCV_TRAITS_ENABLE_DEPRECATED
或作为编译选项-DOPENCV_TRAITS_ENABLE_DEPRECATED
.
如果已定义,则可以继续在代码中使用旧的数据类型结构:
cv::DataType<DstPixel>::type
但是,引入了新的特征系统来解决与数据类型相关的一些问题。 见 https://github.com/opencv/opencv/issues/10115
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 概念中的cv限定符需要表达式参数列表
- EASTL矢量<向量<int>>连续的
- 将CHW格式的浮点向量转换为cv::Mat
- 错误的cv::face FacemarkLBF实例化
- 如何检查给定的参数是否为 cv::noArray()?
- 开放 CV 中的动态内存分配,用于视频处理
- 如何在 opencv 中使用 cv::VideoCapture::waitAny()
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 将 cv::mat 转换为 QImage
- Inference pytorch C++ with alexnet and cv::imread image
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用
- cv::Normalise() 中的 L2_NORM 和 NORM_MINMAX 实现有什么区别?
- 将 cv::Mat 转换为 std::vector 的通用函数
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- 在 QML VideoOutput 中将 cv::mat 显示为 QVideoFrame
- 如何应用带有cv::cuda和C++的Canny Edge检测器?