IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Mac/Linux上编译支持视频输入的YOLOv3程序 -> 正文阅读

[人工智能]Mac/Linux上编译支持视频输入的YOLOv3程序

Mac/Linux上编译支持视频输入的YOLOv3程序

YOLOv3介绍:https://pjreddie.com/darknet/yolo/#demo

一、支持图片检测的编译步骤(官网)

图片检测只需要按照页面提示编译即可。

# 下载项目
git clone https://github.com/pjreddie/darknet
# 进入文件夹
cd darknet
# 编译,会输出"darknet","darknet.a","darknet.so"文件
make
# 下载权重文件
wget https://pjreddie.com/media/files/yolov3.weights
# 执行检测,项目文件夹下会输出检测图片"predictions.png"文件
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

二、支持视频输入的编译步骤

视频检测命令示例是

# 摄像头输入
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
# 视频文件输入
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>

需要OpenCV的支持,因此先编译安装OpenCV。

1.编译安装OpenCV

OpenCV编译步骤(Linux、Mac均可)

# 下载项目
git clone  clone https://github.com/opencv/opencv.git
# 进入目录
cd opencv
# 创建编译目录
mkdir build
# 进入编译目录
cd build
# 创建编译文件(其他参数未实践) 
# 我是在cmake-gui上设置的,“BUILD_PNG”建议重新勾选以保证生效
cmake -DOPENCV_GENERATE_PKGCONFIG:BOOL="1" -DBUILD_PNG:BOOL="1" .
# 编译
make
# 安装
make install

参数介绍:
“OPENCV_GENERATE_PKGCONFIG”:生成 "opencv*.pc"文件,以便其他项目编译时正确导入文件和编译参数;
“BUILD_PNG”:内部libpng编译,防止调用时libpng版本不一致。

我是记录下OpenCV安装路径的,把编译输出文件放到了"darknet"项目下,这样就可以直接引用,防止不确定导入环境引起不必要的麻烦。
找到编译输出路径"/usr/local/Cellar/opencv/4.5.5_1",复制为"darknet/opencv",Linux路径类似。

2.编译YOLOv3

YOLOv3编译步骤:

# 下载项目
git clone https://github.com/pjreddie/darknet.git
# 进入目录
cd darknet
# 修改编译配置 # 修改内容见下文
vim MakeFile
# 修改源文件 # 修改内容见下文
vim src/image_opencv.cpp
# 编译
make
# 执行
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>

修改编译配置:添加c++编译,替换OpenCV引入路径,启用类型转换代码

# vim MakeFile

# 启用OpenCV
GPU=0
CUDNN=0
# OPENCV=0
OPENCV=1
OPENMP=0
DEBUG=0

# 替换引入路径
ifeq ($(OPENCV), 1) 
COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
# 先执行”pkg-config --libs opencv“然后替换为对应路径
# LDFLAGS+= `pkg-config --libs opencv` -lstdc++
LDFLAGS += -Lopencv/lib -lopencv_world -lstdc++
# 先执行”pkg-config --cflags opencv“然后替换为对应路径
# COMMON+= `pkg-config --cflags opencv` 
COMMON  += -Iopencv/include/opencv4 
endif

# 修改g++编译命令
# "--std=c++11":”image_opencv.cpp“需要启用c++11
# "CV__ENABLE_C_API_CTORS":启用"image_opencv.cpp"中"IplImage"与”Mat“的转换
$(OBJDIR)%.o: %.cpp $(DEPS)
#	$(CPP) $(COMMON) $(CFLAGS) -c $< -o $@
	$(CPP) --std=c++11 -DCV__ENABLE_C_API_CTORS $(COMMON) $(CFLAGS) -c $< -o $@

修改源文件,不需要改代码,只需要添加头文件包含即可。
头文件包含直接搜索OpenCV输出文件添加进去即可,IplImage的转换在该类的定义下面。

// vim src/image_opencv.cpp
#include <opencv2/videoio/legacy/constants_c.h>  // CV_CAP_PROP_FRAME_WIDTH
#include <opencv2/highgui/highgui_c.h>  // CV_WND_PROP_FULLSCREEN
#include <opencv2/core/types_c.h> // IplImage
#include <opencv2/core/core_c.h>  // cvCreateImage
// image mat_to_image(Mat m){IplImage ipl = m;...} 需要在编译时定义"CV__ENABLE_C_API_CTORS"

这时候编译出的可执行文件就支持摄像头和视频文件的输出了。

YOLOv3编译及运行错误记录:

# 运行时提示不支持视频输入:没有打开OpenCV宏

# 需要启用c++11:添加编译参数

# 找不到函数引用:MakeFile中确定"-lstdc++"是否被误删除

# 找不到OpenCV链接库:刷新链接库缓存,或指定链接库路径

# CMake遇到错误不能继续:查看出错的模块,删除该模块的编译

# libpng版本不一致
./darknet detector demo cfg/coco.data yolov3-tiny.cfg yolov3-tiny.weights .mp4 
libpng warning: Application built with libpng-1.4.12 but running with 1.6.37
Cannot load image "data/labels/32_0.png"
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:36:57  更:2022-04-22 18:40:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:19:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码