zoukankan      html  css  js  c++  java
  • darknet+opencv在windows上的编译

    darknet 源码网站:https://github.com/pjreddie/darknet

    技术支持官网:https://pjreddie.com/darknet/

    darknet采用C++编写,从github下载源码后,需要先编译才能运行。

    在windows下不支持opencv的编译方法较为简单,参见本人前一篇文章。

    在windows下支持opencv的编译方法本人走了较多弯路,因此总结出来,给同样需要在windows下使用yolo的人员参考。

    1, 踩过的坑

    最直接的办法就是修改makefile,将OPENCV=0改为OPENCV=1,然后采用cgywin的gcc来make

    但make时会出现pkgconfig未配置或opencv.pc找不到。

    网上查了一下,似乎要生成opencv.pc需要重新编译opencv源代码,甚为繁琐。且一般的编译指导都是在linux环境下。

    在网上翻了一下,想直接找一个opencv.pc的例子下载来改改,也找不到。

    2,思路

    后来想,pkgconfig或opencv.pc无非也就是配置一些编译需要的头文件和库文件,为什么不直接在makefile中直接配置呢?

    于是在makefile的opencv段中,删除了以下两段。

    LDFLAGS+= `pkg-config --libs opencv`
    COMMON+= `pkg-config --cflags opencv`

    但make时显然就会报错,可以按错误提示重新配置参数。

    3,解决头文件问题

    由于编译darknet时需要opencv的头文件,make时会报错,显示找不到文件 “opencv2highgui.hpp”等等之类的信息。

    于是将opencv3安装目录下的“opencvuildincludeopencv2”目录整体拷贝到darknet的“include”目录下,问题解决。

    4,解决库文件问题

    make此时可以成功生成*.o目标文件,但因为未指定opencv库,无法链接生成darknet.so和darknet.a文件。

    因此在makefile的opencv段中,加入以下配置。具体路径视计算机安装opencv的位置而定:

    LDFLAGS+= D:/opencv3/opencv/build/x64/vc14/lib/opencv_world330.lib 

    此时在执行make,就能成功编译出darknet.exe、darknet.so和darknet.a文件。其中包含opencv功能,检测完毕可以直接弹出窗口

    darknet detector test cfg/coco.data cfg/yolov2.cfg ../dn-wgts/yolov2.weights data/kite.jpg

  • 相关阅读:
    github分支规范
    前端工程师为什么要学习编译原理?
    现代编译原理——第六章:中间树 IR Tree 含源码
    现代编译原理——第五章:活动记录
    现代编译原理——第四章:语义分析以及源码
    现代编译原理——第三章:抽象语法树以及源码
    现代编译原理——第二章:语法分析之LL(K)
    现代编译原理——第1章:词法分析
    现代编译原理——第0章
    优雅的数组降维——Javascript中apply方法的妙用
  • 原文地址:https://www.cnblogs.com/jackkwok/p/9076434.html
Copyright © 2011-2022 走看看