我是靠谱客的博主 寂寞狗,这篇文章主要介绍YOLOV4:opencv4编译问题,现在分享给大家,希望可以做个参考。

系统环境:

 Centos7 
 opencv-2.4.5(yum installed)

问题1:LIBTIFF_4.0错误

undefined reference to TIFFRGBAImageOK@LIBTIFF_4.0' /usr/lib/x86_64-linux-gnu/libopencv_highgui.so: undefined reference to TIFFReadRGBAStrip@LIBTIFF_4.0'

这个问题是因为我安装了ancoda,ancoda安装的opencv和系统安装的libtiff-devel(yum installed)冲突
解决方法:注释掉anconda的环境变量即可(通常在~/.bashrc中)

问题2:找不到opencv对应的方法

In function mat_to_image': image_opencv.cpp:(.text+0x3a6): undefined reference to _IplImage::_IplImage(cv::Mat const&)'

查看darknet-master/Makefile的代码,发现yolo编译使用了pkg-config工具

ifeq ($(OPENCV), 1)
COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= `pkg-config --libs opencv4 2> /dev/null || pkg-config --libs opencv`
COMMON+= `pkg-config --cflags opencv4 2> /dev/null || pkg-config --cflags opencv`

写了一个简单的测试小程序,发现使用pkg-config可以解决报错问题

g++ test_cv.cpp -o cv #出现了上面的错误
g++ test_cv.cpp -o cv `pkg-config --cflags --libs opencv`  #没有问题

但编译yolo(opencv)还是报错且没有找到解决的方法,只能先卸载opencv-2.4.5再源码安装opencv4

在编译 opencv之前,瞅了一眼opencv-4.1.0/CMakeLists.txt文件,发现pkg-config工具依赖的.pc文件默认是不生成的(deprecated),因此最好把其设置为ON 。另外官网文档也有相关的提示,在命令行添加"DOPENCV_GENERATE_PKGCONFIG=ON"。 (话说有啥好方法替代pkg-config?)

OCV_OPTION(OPENCV_GENERATE_PKGCONFIG  "Generate .pc file for pkg-config build tool (deprecated)" OFF)

编译完opencv4,在 ~/.bashrc中添加如下的环境变量(opencv4安装使用默认路径):

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64

重新编译安装opencv,生成二进制文件darknet

[javis@node4 darknet-master]$ ./darknet --version
 CUDA-version: 10000 (10000), cuDNN: 7.6.1, GPU count: 2  
 OpenCV version: 4.1.0
Not an option: --version

reference:
https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html
https://www.cnblogs.com/yuzhoumeigui/p/12568934.html

最后

以上就是寂寞狗最近收集整理的关于YOLOV4:opencv4编译问题的全部内容,更多相关YOLOV4内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部