系统环境:
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内容请搜索靠谱客的其他文章。
发表评论 取消回复