指定OPENCV=1编译YOLO失败,寻求解决办法
解决YOLO编译时自定义路径OpenCV的报错问题
我来帮你搞定这个编译报错的问题——这本质是YOLO的Makefile默认只会去系统标准路径找OpenCV,而你的OpenCV装在主目录的自定义文件夹里,所以得手动告诉Makefile它的位置才行。下面是具体的解决步骤:
1. 修改YOLO的Makefile,指定OpenCV的自定义路径
打开YOLO项目根目录下的Makefile,找到开头的参数配置部分,做以下修改:
- 首先在
OPENCV=1这一行附近,添加你的OpenCV路径定义:# 替换成你的用户名,比如/home/praneeth/opencv OPENCV_ROOT = /home/你的用户名/opencv OPENCV_INC = $(OPENCV_ROOT)/include OPENCV_LIB = $(OPENCV_ROOT)/lib - 接着找到
CFLAGS和LDFLAGS的定义行,分别加入OpenCV的头文件和库路径:CFLAGS += -I$(OPENCV_INC) LDFLAGS += -L$(OPENCV_LIB) - 或者你也可以直接定位到
ifeq ($(OPENCV), 1)的代码块,把里面默认的OpenCV路径替换成你的自定义路径,效果是一样的。
2. 确保系统能找到OpenCV的库文件
因为你的OpenCV不在系统默认的库路径里,就算编译通过,后续运行YOLO也可能出现找不到库的错误,所以先设置临时环境变量(立即生效):
export LD_LIBRARY_PATH=/home/你的用户名/opencv/lib:$LD_LIBRARY_PATH
如果想让这个设置永久生效,把上面的命令添加到~/.bashrc文件末尾,然后执行source ~/.bashrc刷新环境变量。
3. 清理编译缓存后重新编译
先清理之前编译产生的残留文件,避免干扰:
make clean
然后再重新执行编译命令:
make OPENCV=1
额外检查项
- 确认你的OpenCV已经正确编译完成:主目录下的
opencv文件夹里必须有include和lib子目录,且lib目录下存在libopencv_core.so、libopencv_highgui.so等核心库文件。 - 检查CUDA和CUDNN的环境变量是否配置正确:比如
CUDA_HOME应该指向/usr/local/cuda-8.0,LD_LIBRARY_PATH里要包含/usr/local/cuda-8.0/lib64和CUDNN的库路径(通常是/usr/local/cuda-8.0/lib64,因为CUDNN一般会安装到CUDA目录下)。
内容的提问来源于stack exchange,提问作者Praneeth varma
相关产品推荐
相关产品推荐

