mac下安装darknet和opencv跑yolo-v2实时目标检测

参考:

https://pjreddie.com/darknet/yolov2/ #yolo-v2

https://opencv.org/releases.html #opencv源码下载

 环境:

mac下安装darknet和opencv跑yolo-v2实时目标检测_第1张图片

整个安装过程用两个字来形容就是“折腾”。第一步先安装好opencv,一个强大开源计算机视觉库。从官网下载了2.4.10的源码进行编译安装:

cd opencv-2.4.10

mkdir build

cd build

cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release .. 

在源码目录下新建了一个build目录,这是因为cmake执行过程中会生成很多编译的中间文件以及makefile文件,cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)。cmake编译如果能一冲到底那就恭喜了,也就没有下文了,不过这种概率几乎为0。我这反正是出了N多错误,譬如:

opencv-2.4.10/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10: fatal error: 'io.h' file not found
fatal error: 'linux/videodev2.h' file not found 

fatal error: 'libavformat/avformat.h' file not found

fatal error: 'ffmpeg/avformat.h' file not found

...

各种找不到头文件或其它错误,尝试了一些办法去解决,但要消除全部错误几乎要累趴下,放弃源码编译这条路径,改用brew安装。

brew install opencv

然后进入可怕的静默状态,等了N久,中间我还重装了一次homebrew,终于看到了进度条。
mac下安装darknet和opencv跑yolo-v2实时目标检测_第2张图片完成了第一步opencv的安装。然后进入第二步,从github上下载darknet源码进行编译安装。
因为我们要带opencv安装darknet,所以要将Makefile文件中opencv一项置为1。

然后make开始编译,迎来了意料中的报错。

.....

"_cvWaitKey", referenced from:

      _test_resize in image.o

      _display_in_thread in demo.o

ld: symbol(s) not found for architecture x86_64

clang: fatal error: linker command failed with exit code 1 (use -v to see invocation)

先是一顿百度,谷歌没有解决,然后自己仔细分析了一下Makefile,发现有一处异常。

mac下安装darknet和opencv跑yolo-v2实时目标检测_第3张图片

LDFLAGS和COMMON都有用到pkg-config工具,这个工具可以列出某个库的相关信息,例如:

而我恰恰没有这个pkg-config,首先尝试下源码安装,失败。然后用brew安装,成功了。

再重新make一下darknet,竟然成功了!

下面可以跑一下实时检测的命令了:

./darknet detector demo cfg/coco.data cfg/yolov2.cfg yolov2.weights

mac下安装darknet和opencv跑yolo-v2实时目标检测_第4张图片

它会自动把摄像头打开,进行实时目标检测。

 

你可能感兴趣的:(深度学习)