YOLO---YOLOv3 with OpenCV 再使用
YOLO---YOLOv3 with OpenCV 再使用
YOLOv3 with OpenCV官网 @ https://github.com/JackKoLing/opencv_deeplearning_practice/tree/master/pracice3_opencv_yolov3
下载并备齐:yolov3.weights权重文件、yolov3.cfg网络构建文件、coco.names、xxx.jpg、xxx.mp4文件、object_detection_yolo.cpp、object_detection_yolo.py等文件;
依赖环境:C++的编译环境(如G++/VScode)、OpenCV3.4.2+(记住安装目录)
编译情况:下载源文件,无需复杂的编译,直接修改进行应用
支持:windows + linux + CPU + GPU(可适用于英特尔)
特点:
(1)在OpenCV中使用YOLOv3, 可以在windows下+ ubuntu下使用。
(2)windows下,之前做,object_detection_yolo.cpp是在Visual Studio(VS)下编译的。
(3)ubuntu下,这次,object_detection_yolo.cpp是g++编译的。
(3)OpenCV的DNN,GPU仅使用英特尔的GPU进行测试,因此如果没有英特尔GPU,代码会将您切换回CPU。
使用:
(1)object_detection_yolo.cpp,执行:
编译,g++ `pkg-config opencv --cflags` object_detection_yolo.cpp -o object_detection_yolo `pkg-config opencv --libs` -std=c++11
测试,a single image:
./object_detection_yolo --image=./data/1.jpg
a video file:
./object_detection_yolo --video=./data/run.mp4
(2)object_detection_yolo.py,执行:
a single image:
python3 object_detection_yolo.py --image=bird.jpg
a video file:
python3 object_detection_yolo.py --video=run.mp4
#readme.txt
Run the getModels.sh file from command line to download the needed model files sudo chmod a+x getModels.sh
./getModels.sh Python:
Commandline usage to colorize
a single image:
python3 object_detection_yolo.py --image=bird.jpg
a video file:
python3 object_detection_yolo.py --video=run.mp4 C++:
a single image:
./object_detection_yolo.out --image=bird.jpg
a video file:
./object_detection_yolo.out --video=run.mp4 Compilation examples:
g++ -ggdb `pkg-config --cflags --libs /usr/local/Cellar/opencv3/3.4./lib/pkgconfig/opencv.pc` object_detection_yolo.cpp -o object_detection_yolo.out g++ -ggdb `pkg-config --cflags --libs /usr/local/opencv3.4.2/lib/pkgconfig/opencv.pc` object_detection_yolo.cpp -o object_detection_yolo.out # For OpenCV 2.4.x
cd /path/to/opencv/samples/c/
# For OpenCV
cd /path/to/opencv/samples/cpp/
#Compile
g++ -ggdb facedetect.cpp -o facedetect `pkg-config --cflags --libs opencv`
#run
./facedetect /usr/local/opencv3.4.2/include/opencv2/??
cd /home/u/opencv3.4.2/samples/cpp/ ??
g++ -ggdb `pkg-config --cflags --libs /usr/lib/x86_64-linux-gnu/pkgconfig/opencv.pc` object_detection_yolo.cpp -o object_detection_yolo.out g++ -ggdb object_detection_yolo.cpp -o object_detection_yolo.out `pkg-config --cflags --libs /usr/lib/x86_64-linux-gnu/pkgconfig/opencv.pc` g++ object_detection_yolo.cpp -o object_detection_yolo `pkg-config --cflags --libs /usr/lib/x86_64-linux-gnu/pkgconfig/opencv.pc`
-------------------具体遇见问题与解决----------------------
(1)只要环境搭建好,object_detection_yolo.py运行比较顺畅,没有出现什么问题
(2)object_detection_yolo.cpp编译时,遇见问题
运行:
g++ object_detection_yolo.cpp -o object_detection_yolo `pkg-config --cflags --libs /usr/lib/x86_64-linux-gnu/pkgconfig/opencv.pc` 报错:
No package 'object_detection_yolo' found
object_detection_yolo.cpp:10:31: fatal error: opencv2/highgui.hpp: 没有那个文件或目录
#include <opencv2/highgui.hpp>
^
compilation terminated.
u@u1604:~/yolov3-opencv3.4.2/yolo-opencv$ g++ `pkg-config object_detection_yolo --cflags` object_detection_yolo.cpp -o opencv `pkg-config opencv --libs`
Package object_detection_yolo was not found in the pkg-config search path.
Perhaps you should add the directory containing `object_detection_yolo.pc'
to the PKG_CONFIG_PATH environment variable
No package 'object_detection_yolo' found
object_detection_yolo.cpp:11:31: fatal error: opencv2/imgproc.hpp: 没有那个文件或目录
#include <opencv2/imgproc.hpp>
^
compilation terminated.
u@u1604:~/yolov3-opencv3.4.2/yolo-opencv$ g++ `pkg-config object_detection_yolo --cflags` object_detection_yolo.cpp -o opencv `pkg-config opencv --libs`
Package object_detection_yolo was not found in the pkg-config search path.
Perhaps you should add the directory containing `object_detection_yolo.pc'
to the PKG_CONFIG_PATH environment variable
No package 'object_detection_yolo' found
object_detection_yolo.cpp:13:27: fatal error: opencv2/dnn.hpp: 没有那个文件或目录
#include <opencv2/dnn.hpp>
^
compilation terminated. 解决:
查看object_detection_yolo.cpp中highgui.hpp、imgproc.hpp、dnn.hpp都能找到文件,猜测是路径读不进来,按提示更改,
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/dnn/dnn.hpp>
//#include <opencv2/highgui.hpp>
//#include <opencv2/imgproc.hpp>
//#include <opencv2/dnn.hpp>
--------------------
拷贝
sudo cp -r /home/用户名/桌面/lib /usr
sudo cp -r /home/u/桌面/dnn.hpp /usr/include/opencv2/dnn
新建
sudo touch filename 新建文件
sudo mkdir foldername 新建文件夹
删除
sudo rm -rf 文件夹
sudo rm -rf 文件
----------------------------------
上一步,通了
继续执行:
g++ `pkg-config opencv --cflags` object_detection_yolo.cpp -o object_detection_yolo `pkg-config opencv --libs`
(参考 g++ `pkg-config opencv --cflags` opencv.cpp -o opencv `pkg-config opencv --libs` #将OpenCV的库包含进去,进行编译)
报错:
------------------------------
u@u1604:~/yolov3-opencv3.4.2/yolo-opencv$ g++ `pkg-config opencv --cflags` object_detection_yolo.cpp -o object_detection_yolo `pkg-config opencv --libs` object_detection_yolo.cpp: In function ‘int main(int, char**)’:
object_detection_yolo.cpp:77:31: error: no matching function for call to ‘std::basic_ifstream<char>::basic_ifstream(std::__cxx11::string&)’
ifstream ifile(str);
------------------------------
解决:
gcc/g++以c++11编译(仅g++ .8及以上版本才支持C++ 11标准。)
g++ --version
g++ -V
再执行OK:
g++ `pkg-config opencv --cflags` object_detection_yolo.cpp -o object_detection_yolo `pkg-config opencv --libs` -std=c++11 执行可执行文件:
./object_detection_yolo --image=./data/1.jpg
*****************************#再用**************************************
# g++ `pkg-config opencv --cflags` yolo.cpp -o yolo `pkg-config opencv --libs` -std=c++ a single image:
./yolo --image=./data/.jpg
a video file:
./yolo --video=./data/run.mp4 使用语法:
u@u160406:~/yolo-opencv$ g++ `pkg-config opencv --cflags` yolo.cpp -o yolo `pkg-config opencv --libs` -std=c++
u@u160406:~/yolo-opencv$ ./yolo --video=./data/run.mp4
YOLO---YOLOv3 with OpenCV 再使用的更多相关文章
- 10分钟学会使用YOLO及Opencv实现目标检测(下)|附源码
将YOLO应用于视频流对象检测 首先打开 yolo_video.py文件并插入以下代码: # import the necessary packages import numpy as np impo ...
- 一文带你学会使用YOLO及Opencv完成图像及视频流目标检测(上)|附源码
计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不 ...
- YOLO object detection with OpenCV
Click here to download the source code to this post. In this tutorial, you’ll learn how to use the Y ...
- Python实现YOLO目标检测
作者:R语言和Python学堂 链接:https://www.jianshu.com/p/35cfc959b37c 1. 什么是目标检测? YOLO目标检测的一个示例 啥是目标检测? 拿上图 (用YO ...
- 从YOLOv1到YOLOv3,目标检测的进化之路
https://blog.csdn.net/guleileo/article/details/80581858 本文来自 CSDN 网站,作者 EasonApp. 作者专栏: http://dwz.c ...
- YOLO---Darknet下使用YOLO的常用命令
Darknet下使用YOLO的常用命令 整理了一下,随手记一下. 在终端里,直接运行时Yolo的Darknet的各项命令,/home/wp/darknet/cfg/coco.data文件,使用原件:= ...
- Yolo车辆检测+LaneNet车道检测
Yolo车辆检测+LaneNet车道检测 源代码:https://github.com/Dalaska/Driving-Scene-Understanding/blob/master/README.m ...
- YOLO v1到YOLO v4(下)
YOLO v1到YOLO v4(下) Faster YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向过程只用8.52 billion 运算,而VGG-16要30.69bi ...
- Ubuntu下移植OpenCv
通过近一周的时候终于成功交叉编译opencv成功了,真心不容易.有一句话乃真理也,凡事贵在坚持.过程总是痛苦的,因为不懂得很多问题但是又需要面对很多问题,最大的收获就是耐心解决所有问题后就懂得这些了. ...
随机推荐
- MySQL“Another MySQL daemon already running with the same unix socket”的处理
方法一: rm var/lib/mysql/mysql.sock service mysqld start 方法二: mv /var/lib/mysql/mysql.sock /var/lib/mys ...
- Memcached的安装与常用命令
一.概述 MSM:Memcached-Session-ManagerMemcached是一款高性能.分布式的内存对象缓存系统 二.安装Memcached 在安装Memcached之前,我们需要先安装上 ...
- [转帖]Linux内核剖析(一)Linux的历史
Linux内核剖析(一)Linux的历史 https://www.cnblogs.com/alantu2018/p/8991158.html Unix操作系统 Unix的由来 汤普逊和里奇最早是在贝尔 ...
- [转帖]华为鲲鹏云服务器实战:华为云鲲鹏KC1实例 vs. 阿里云G5实例
鲲鹏云服务器实战:华为云鲲鹏KC1实例 vs. 阿里云G5实例 https://m.ithome.com/html/444828.htm 2019-09-12 15:25IT之家 (阿迷) 今年一月份 ...
- oracle 列合并成并用拼接符拼接 -- LISTAGG函数用法
==注:wm_concat(str1) 11g 后不支持使用== LISTAGG函数用法 select LISTAGG(name, ',') WITHIN GROUP (ORDER BY id) fr ...
- dubbo探究
一 占位 待整理.. 二 问题汇总 1 谈谈dubbo的超时重试 dubbo 启动时默认有重试机制和超时机制.如果在一定的时间内,provider没有返回,则认为本次调用失败.重试机制出现在调用失败时 ...
- Spring (4)框架
Spring第四天讲义 今日内容 Spring的事务管理 Spring和MyBatis框架的集成 1. Spring的事务管理 1.1. 事务是什么? 在操作数据库时(增删改),如果同时操作多次数据, ...
- QCache<key,T> 就定义了一个缓存,其类似于map,好处是QCache自动获得被插入对象的所有权,控制所有对象的costs总和(自动管理对象的生存时间。正经数据是不会用到它的,辅助控制才有可能用到它)
在软件开发中,我们经常需要在内存中存储一些临时数据用于后续相关计算.我们一般把这些数据存储到某个数组里,或者STL中的某个合适的容器中.其实,在Qt中直接为我们提供了一个QCache类专用于这种需求. ...
- Ocelot + Consul的demo(二)集群部署
把服务A和服务B接口分别部署在两个ip地址上 修改 services.json文件, { "encrypt": "7TnJPB4lKtjEcCWWjN6jSA==&quo ...
- my SO 链接opencv静态库一些FUCKing的笔记 opencv410 有毒
1. 2. CMake "/work/lib/opencv/ubuntu14/4.1.0" make[2]: *** No rule to make target `/usr/lo ...