error: ‘CV_DEPRECATED_EXTERNAL’ does not name a type; did you mean ‘TRT_DEPRECATED_ENUM’? CV_DEPRECATED_EXTERNAL
时间: 2023-08-16 07:07:39 浏览: 174
这个错误是由于OpenCV版本问题导致的。在旧版本的OpenCV中,使用的是`CV_DEPRECATED_EXTERNAL`,而在新版本中已经被替换成了`CV_DEPRECATED`。解决这个问题的方法是将错误信息中的`CV_DEPRECATED_EXTERNAL`替换成`CV_DEPRECATED`。如果你使用的是旧版本的OpenCV,可以在代码中添加以下宏定义来避免这个错误:
```
#define CV_DEPRECATED CV_DEPRECATED_EXTERNAL
```
如果你使用的是新版本的OpenCV,则不需要添加这个宏定义。
相关问题
lobal shadow_sift.hpp:15 cv::xfeatures2d::SIFT_create DEPRECATED: cv.xfeatures2d.SIFT_create() is deprecated due SIFT tranfer to the main repository
你的问题是关于 cv::xfeatures2d::SIFT_create 函数的警告信息。这个警告信息是因为该函数已被标记为过时的,原因是 SIFT 算法已经从 OpenCV 的扩展模块被移到了主存储库中。因此,建议你使用 OpenCV 的主存储库中的 SIFT 函数,而不是使用 cv::xfeatures2d::SIFT_create。你可以使用 cv::SIFT_create() 函数来代替 cv::xfeatures2d::SIFT_create。
typedef Scalar_<double> Scalar; template<typename _Tp> class DataType< Scalar_<_Tp> > { public: typedef Scalar_<_Tp> value_type; typedef Scalar_<typename DataType<_Tp>::work_type> work_type; typedef _Tp channel_type; enum { generic_type = 0, channels = 4, fmt = traits::SafeFmt<channel_type>::fmt + ((channels - 1) << 8) #ifdef OPENCV_TRAITS_ENABLE_DEPRECATED ,depth = DataType<channel_type>::depth ,type = CV_MAKETYPE(depth, channels) #endif }; typedef Vec<channel_type, channels> vec_type; };
+ traits::SafeFmt<channel_type>::type, type = CV_MAKETYPE(fmt, channels) };这段代码提供了一个模板类DataType的定义,它的参数是Scalar_<_Tp>类型,它定义了一些类型和常量,例如value_type、work_type、channel_type、generic_type、channels、fmt、type。
阅读全文