Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found

YOLO系列

You only look once (YOLO)

本文概述

本文讲述如何在ubuntu20.04(其他版本系统也适用)下编译官方darknet框架下YOLOV3并使用提供的coco数据集的预训练权重检测识别图片。

一些软件依赖

Opencv4 这里会和官方教程有一些出入,2021-2022年的时候ubuntu里安装的多是opecv4,编译darknet YOLO的时候可能因为opencv和opencv4会报错 No package ‘opencv’ found。
CUDA

官方网站和官方英文教程

https://pjreddie.com/darknet/yolo/

下载YOLOV3并直接make编译

新建一个空文件夹,在当前路径下打开命令行,输入下面命令git clone下载,cd进下载的文件夹,编译。

git clone https://github.com/pjreddie/darknet
cd darknet
make

在darknet/makefile 里可以看到默认的make是不用gpu和opencv cudnn的。

GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0

下载权重文件,这里我是在/darknet/cfg文件夹路径下下载的,也可以放在不同的路径下,之后指明对应路径就行。权重248MB大小。

wget https://pjreddie.com/media/files/yolov3.weights

Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found
运行检测,检测对象是自带的darknet/dog.jpg. cfg/yolv3.cfg 是自带的,weights是刚刚下载的248MB。
./darknet detect cfg/yolov3.cfg cfg/yolov3.weights data/dog.jpg

如果weights下载在darknet路径下,可以

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

命令行会输出:

Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found
同时darknet文件夹内生成一张图片名叫predictions.jpg
Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found
至此,CPU运行YOLOV3成功跑通,识别效果也不错。
但是命令行结果里可以看出,在10700fcpu上花了17s多,比较长,下面开始gpu实现。

编译GPU实现YOLO

要求N卡和cuda

需要cuda和驱动已经安装好。Cudnn可以不需要。

nvidia-smi

Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found

编译GPU版YOLOV3

如果之前make过,先在darknet路径下打开命令行,make clean, 很快,几秒完成。

make clean

Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found
然后打开 dakenet/makefile,可以用im或者记事本打开,将最前面的几行改为
GPU=1
CUDNN=0
OPENCV=1
OPENMP=0
DEBUG=0

保存后直接make会报错 No package ‘opencv’ found。需要改为opencv4.

No package 'opencv' found
./src/image_opencv.cpp:12:1: error: ‘IplImage’ does not name a type
   12 | IplImage *image_to_ipl(image im)
      | ^~~~~~~~
compilation terminated due to -Wfatal-errors.

make: *** [Makefile:86: obj/image_opencv.o] Error 1

whereis opencv,找不到但是可以找到 whereis opencv4.

(base) xxxx:~/xxxxt/darknet$ whereis opencv
opencv:
(base) xxxx:~/xxxx/darknet$ whereis opencv4
opencv4: /usr/include/opencv4 /usr/share/opencv4

将makefile里的45 46行原本的opencv改为opencv4

ifeq ($(OPENCV), 1)
COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= pkg-config --libs opencv4 -lstdc++
COMMON+= pkg-config --cflags opencv4
endif

Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found

然饿仍然会有报错:

‵./src/image_opencv.cpp:12:1: error: ‘IplImage’ does not name a type
   12 | IplImage *image_to_ipl(image im)
      | ^~~~~~~~
compilation terminated due to -Wfatal-errors.

make: *** [Makefile:86: obj/image_opencv.o] Error 1

这时候新建一个文本文档叫做patch.diff,将以下内容复制进新建的文档并且git apply diff
ref:https://stackoverflow.com/questions/64885148/error-iplimage-does-not-name-a-type-when-trying-to-build-darknet-with-opencv

`
diff –git a/src/image_opencv.cpp b/src/image_opencv.cpp
index 7511280..c11805a 100644

Original: https://blog.csdn.net/qq_34898487/article/details/123904094
Author: yz_弘毅道远
Title: Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/703153/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球