前几天按照YOLO_v4的教程,想在ROS环境下运行YOLO算法,结果在编译的环节报错了,如下图所示。
百度搜索无果,后来用bing搜索终于找到了可行的参考解决方案,因为opCV版本的问题,我们需要在编译的时候加上一些额外的参数如下:
catkin build darknet_ros --cmake-args -DCMAKE_CXX_FLAGS=-DCV__ENABLE_C_API_CTORS
具体的原因在链接中解释的比较明白了:
I think I found the way to fix the problem. The reason why this error
showed is the new version opencv doesn’t define the macro
‘CV__ENABLE_C_API_CTORS’. As a result, the function
‘_IplImage::_IplImage(cv::Mat&)’ would not be defined.
To fix the problem, just need to add one arg when using the catkin
tool to build the darknet_ros
-DCMAKE_CXX_FLAGS=-DCV__ENABLE_C_API_CTORS. This arg will tell the cmake to define the marco ‘CV__ENABLE_C_API_CTORS’.
In short, under the new version opencv, we can build this project
with: catkin build darknet_ros --cmake-args
-DCMAKE_CXX_FLAGS=-DCV__ENABLE_C_API_CTORS or catkin build -DCMAKE_CXX_FLAGS=-DCV__ENABLE_C_API_CTORS darknet_ros