[CF]构建项目基础目录
This commit is contained in:
parent
7eee69dc41
commit
f32a53508b
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
venv
|
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
9
.idea/le-yolo.iml
generated
Normal file
9
.idea/le-yolo.iml
generated
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="Go" enabled="true" />
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/le-yolo.iml" filepath="$PROJECT_DIR$/.idea/le-yolo.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
78
README.md
Normal file
78
README.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# YOLO 项目
|
||||||
|
|
||||||
|
这是一个使用 YOLO (You Only Look Once) 模型进行视频目标检测的项目。
|
||||||
|
|
||||||
|
## 快速开始
|
||||||
|
|
||||||
|
### 方法1: 使用Bash脚本 (macOS/Linux推荐)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./run_app.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 方法2: 使用批处理脚本 (Windows推荐)
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
run_app.bat
|
||||||
|
```
|
||||||
|
|
||||||
|
### 方法3: 使用Python脚本 (跨平台)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 setup_and_run.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### 方法4: 手动设置
|
||||||
|
|
||||||
|
#### macOS/Linux:
|
||||||
|
```bash
|
||||||
|
# 1. 创建虚拟环境
|
||||||
|
python3 -m venv venv
|
||||||
|
|
||||||
|
# 2. 激活虚拟环境
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
# 3. 安装依赖
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# 4. 运行应用
|
||||||
|
cd src
|
||||||
|
python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Windows:
|
||||||
|
```cmd
|
||||||
|
REM 1. 创建虚拟环境
|
||||||
|
python -m venv venv
|
||||||
|
|
||||||
|
REM 2. 激活虚拟环境
|
||||||
|
venv\Scripts\activate.bat
|
||||||
|
|
||||||
|
REM 3. 安装依赖
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
REM 4. 运行应用
|
||||||
|
cd src
|
||||||
|
python app.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
- 确保在 `res/` 目录中有名为 `test.mp4` 的视频文件
|
||||||
|
- 首次运行时会自动下载 YOLOv8n 模型文件
|
||||||
|
- 检测结果会保存在 `runs/detect/` 目录中
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
le-yolo/
|
||||||
|
├── src/
|
||||||
|
│ └── app.py # 主应用文件
|
||||||
|
├── res/
|
||||||
|
│ └── test.mp4 # 测试视频文件
|
||||||
|
├── requirements.txt # Python依赖
|
||||||
|
├── run_app.sh # Bash启动脚本 (macOS/Linux)
|
||||||
|
├── run_app.bat # 批处理启动脚本 (Windows)
|
||||||
|
├── setup_and_run.py # Python启动脚本 (跨平台)
|
||||||
|
└── README.md # 项目说明
|
||||||
|
```
|
@ -1 +0,0 @@
|
|||||||
1111
|
|
5
requirements.txt
Normal file
5
requirements.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
ultralytics
|
||||||
|
opencv-python
|
||||||
|
torch
|
||||||
|
torchvision
|
||||||
|
Pillow
|
BIN
res/test.mp4
Normal file
BIN
res/test.mp4
Normal file
Binary file not shown.
62
run_app.bat
Normal file
62
run_app.bat
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
:: 创建虚拟环境,并且运行app.py的脚本 (Windows版本)
|
||||||
|
|
||||||
|
echo 开始设置YOLO项目环境...
|
||||||
|
|
||||||
|
:: 检查Python是否安装
|
||||||
|
python --version >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo 错误: Python 未安装,请先安装Python
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 创建虚拟环境
|
||||||
|
echo 创建虚拟环境...
|
||||||
|
python -m venv venv
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo 创建虚拟环境失败
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 激活虚拟环境
|
||||||
|
echo 激活虚拟环境...
|
||||||
|
call venv\Scripts\activate.bat
|
||||||
|
|
||||||
|
:: 升级pip
|
||||||
|
echo 升级pip...
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
|
||||||
|
:: 安装依赖
|
||||||
|
echo 安装项目依赖...
|
||||||
|
pip install -r requirements.txt
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo 安装依赖失败
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 检查测试视频文件是否存在
|
||||||
|
if not exist "res\test.mp4" (
|
||||||
|
echo ❌ 错误: res\test.mp4 文件不存在!
|
||||||
|
echo.
|
||||||
|
echo 请按以下步骤操作:
|
||||||
|
echo 1. 在 res\ 目录中放置一个视频文件
|
||||||
|
echo 2. 将视频文件重命名为 test.mp4
|
||||||
|
echo 3. 重新运行此脚本
|
||||||
|
echo.
|
||||||
|
echo 支持的视频格式: .mp4, .avi, .mov, .mkv 等
|
||||||
|
echo 脚本已停止运行。
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 运行应用
|
||||||
|
echo 运行应用...
|
||||||
|
cd src
|
||||||
|
python app.py
|
||||||
|
|
||||||
|
echo ✅ 应用运行完成!检测结果已保存在 runs\detect\ 目录中
|
||||||
|
pause
|
50
run_app.sh
Executable file
50
run_app.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 创建虚拟环境,并且运行app.py的脚本
|
||||||
|
|
||||||
|
echo "开始设置YOLO项目环境..."
|
||||||
|
|
||||||
|
# 检查Python3是否安装
|
||||||
|
if ! command -v python3 &> /dev/null; then
|
||||||
|
echo "错误: Python3 未安装,请先安装Python3"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建虚拟环境
|
||||||
|
echo "创建虚拟环境..."
|
||||||
|
python3 -m venv venv
|
||||||
|
|
||||||
|
# 激活虚拟环境
|
||||||
|
echo "激活虚拟环境..."
|
||||||
|
source venv/bin/activate
|
||||||
|
|
||||||
|
# 升级pip
|
||||||
|
echo "升级pip..."
|
||||||
|
pip install --upgrade pip
|
||||||
|
|
||||||
|
# 安装依赖
|
||||||
|
echo "安装项目依赖..."
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# 检查测试视频文件是否存在
|
||||||
|
if [ ! -f "res/test.mp4" ]; then
|
||||||
|
echo "❌ 错误: res/test.mp4 文件不存在!"
|
||||||
|
echo ""
|
||||||
|
echo "请按以下步骤操作:"
|
||||||
|
echo "1. 在 res/ 目录中放置一个视频文件"
|
||||||
|
echo "2. 将视频文件重命名为 test.mp4"
|
||||||
|
echo "3. 重新运行此脚本"
|
||||||
|
echo ""
|
||||||
|
echo "支持的视频格式: .mp4, .avi, .mov, .mkv 等"
|
||||||
|
echo "脚本已停止运行。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ 找到测试视频文件: res/test.mp4"
|
||||||
|
|
||||||
|
# 运行应用
|
||||||
|
echo "运行应用..."
|
||||||
|
cd src
|
||||||
|
python app.py
|
||||||
|
|
||||||
|
echo "✅ 应用运行完成!检测结果已保存在 runs/detect/ 目录中"
|
79
setup_and_run.py
Normal file
79
setup_and_run.py
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def run_command(command, shell=False):
|
||||||
|
"""运行命令并返回结果"""
|
||||||
|
try:
|
||||||
|
result = subprocess.run(command, shell=shell, check=True,
|
||||||
|
capture_output=True, text=True)
|
||||||
|
return result.returncode, result.stdout, result.stderr
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
return e.returncode, e.stdout, e.stderr
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("开始设置YOLO项目环境...")
|
||||||
|
|
||||||
|
# 检查Python3是否安装
|
||||||
|
if not shutil.which("python3"):
|
||||||
|
print("错误: Python3 未安装,请先安装Python3")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# 创建虚拟环境
|
||||||
|
print("创建虚拟环境...")
|
||||||
|
returncode, stdout, stderr = run_command([sys.executable, "-m", "venv", "venv"])
|
||||||
|
if returncode != 0:
|
||||||
|
print(f"创建虚拟环境失败: {stderr}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# 确定虚拟环境中的Python解释器路径
|
||||||
|
if os.name == 'nt': # Windows
|
||||||
|
venv_python = os.path.join("venv", "Scripts", "python.exe")
|
||||||
|
venv_pip = os.path.join("venv", "Scripts", "pip.exe")
|
||||||
|
else: # macOS/Linux
|
||||||
|
venv_python = os.path.join("venv", "bin", "python")
|
||||||
|
venv_pip = os.path.join("venv", "bin", "pip")
|
||||||
|
|
||||||
|
# 升级pip
|
||||||
|
print("升级pip...")
|
||||||
|
returncode, stdout, stderr = run_command([venv_pip, "install", "--upgrade", "pip"])
|
||||||
|
if returncode != 0:
|
||||||
|
print(f"升级pip失败: {stderr}")
|
||||||
|
|
||||||
|
# 安装依赖
|
||||||
|
print("安装项目依赖...")
|
||||||
|
returncode, stdout, stderr = run_command([venv_pip, "install", "-r", "requirements.txt"])
|
||||||
|
if returncode != 0:
|
||||||
|
print(f"安装依赖失败: {stderr}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# 检查测试视频文件是否存在
|
||||||
|
if not os.path.exists("res/test.mp4"):
|
||||||
|
print("❌ 错误: res/test.mp4 文件不存在!")
|
||||||
|
print()
|
||||||
|
print("请按以下步骤操作:")
|
||||||
|
print("1. 在 res/ 目录中放置一个视频文件")
|
||||||
|
print("2. 将视频文件重命名为 test.mp4")
|
||||||
|
print("3. 重新运行此脚本")
|
||||||
|
print()
|
||||||
|
print("支持的视频格式: .mp4, .avi, .mov, .mkv 等")
|
||||||
|
print("脚本已停止运行。")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# 运行应用
|
||||||
|
print("运行应用...")
|
||||||
|
os.chdir("src")
|
||||||
|
returncode, stdout, stderr = run_command([os.path.join("..", venv_python), "app.py"])
|
||||||
|
|
||||||
|
if returncode == 0:
|
||||||
|
print("✅ 应用运行完成!检测结果已保存在 runs/detect/ 目录中")
|
||||||
|
else:
|
||||||
|
print(f"应用运行失败: {stderr}")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
3
src/app.py
Normal file
3
src/app.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from ultralytics import YOLO
|
||||||
|
model = YOLO("yolov8n.pt")
|
||||||
|
results = model.predict("../res/test.mp4", show=True, save=True)
|
BIN
src/runs/detect/predict/test.mp4
Normal file
BIN
src/runs/detect/predict/test.mp4
Normal file
Binary file not shown.
BIN
src/yolov8n.pt
Normal file
BIN
src/yolov8n.pt
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user