在 Termux 中使用手机摄像头运行 YOLO 目标检测,核心是调用手机摄像头采集图像/视频流 + 部署 YOLO 模型推理 ,以下是可直接实践的步骤:
1. 环境准备(Termux 内执行)
升级 Termux 包并安装依赖
pkg update && pkg upgrade -y pkg install python python-pip git ffmpeg libjpeg-turbo libopencv -y安装 Python 核心库
pip install numpy opencv-python ultralytics pillowultralytics是 YOLOv8 官方库,支持一键调用模型;opencv-python用于摄像头调用和图像处理。
2. 授权手机摄像头访问
Termux 需获取摄像头权限,执行以下命令:
termux-camera-photo test.jpg
- 首次执行会弹出权限请求,选择 允许 ;若命令生成
test.jpg文件,说明摄像头授权成功。
3. 运行 YOLO 实时检测代码
创建 Python 脚本 yolo_camera.py:
nano yolo_camera.py
粘贴以下代码(支持实时摄像头流检测):
from ultralytics import YOLO
import cv2
# 加载 YOLOv8n 轻量化模型(自动下载)
model = YOLO("yolov8n.pt")
# 调用手机摄像头(Termux 中摄像头索引通常为 0)
cap = cv2.VideoCapture(0)
# 设置分辨率(可选,根据手机性能调整)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 模型推理(stream=True 提升实时性)
results = model(frame, stream=True)
# 绘制检测框和标签
for r in results:
boxes = r.boxes
for box in boxes:
x1, y1, x2, y2 = map(int, box.xyxy[0])
conf = box.conf[0].item()
cls = int(box.cls[0])
label = f"{model.names[cls]} {conf:.2f}"
# 画框 + 标签
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(frame, label, (x1, y1-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 2)
# 显示检测结果
cv2.imshow("YOLO Camera Detection", frame)
# 按 q 退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
保存退出(Ctrl+O → 回车 → Ctrl+X)
4. 启动检测程序
python yolo_camera.py
- 首次运行会自动下载 YOLOv8n 模型(约 6MB);
- 若弹出实时画面并显示目标检测框,说明运行成功。
常见问题排查
- 摄像头无法调用 :
- 执行
termux-setup-storage重新授权,或在手机设置 → 应用 → Termux → 权限 中手动开启摄像头权限。
- 执行
- 推理卡顿 :
- 改用更小模型(如
yolov8n.pt),或降低分辨率(设为 480x320); - 关闭其他后台程序,Termux 中可执行
renice -n -10 -p $$提升进程优先级。
- 改用更小模型(如
- 缺少依赖报错 :
- 执行
pip install --upgrade ultralytics opencv-python重装库。
- 执行
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
模型
+关注
关注
1文章
3655浏览量
51748 -
目标检测
+关注
关注
0文章
232浏览量
16385
发布评论请先 登录
相关推荐
热点推荐
如何在大核rtt上把kd_mpi_vicap_start_stream三个摄像头各自出的流拼成一个流呢?
我要3个摄像头在同一个画面,目前vi采集部分跑的配置摄像头各自出的流就已经是960*540,最后启动kd_mpi_vicap_start_stream。
四宫格排列刚好是1080p,就
发表于 09-09 07:20
【EASY EAI Orin Nano开发板试用体验】使用stream推流代码和WEB服务器代码实现在客户端网页上查看摄像头图像
重点。在嵌入式系统中,对摄像头图像的推流可以用两种方式,第一种是直接使用液晶显示屏显示摄像头图像,第二种就是在WEB服务器网页上推
发表于 08-11 23:15
360环视技术推荐的硬件平台:支持多摄像头与三屏异显的理想选择
硬件平台选型360环视的落地并不简单。它不仅需要多个高清摄像头的数据输入,还需要稳定的图像处理能力、强大的AI推理能力,以及足够多的视频输出接口支持显示需求。很多开发者在选型时会遇到一
发表于 07-30 17:32
【正点原子STM32MP257开发板试用】基于 DeepLab 模型的图像分割
== \'__main__\':
main()
效果
USB 摄像头采集实时画面的图像分割推理效果
终端打印信息
动态识别效果见顶部视频
发表于 06-21 21:11
K230micropython下能实现同时用USB摄像头和板载摄像头YOLO识别并显示在IDE上吗?
K230micropython下能实现同时用USB摄像头和板载摄像头YOLO识别并显示在IDE上吗?以及如何提高USB进行YOLO识别的帧数?
发表于 06-20 06:35
usb摄像头输入的图像,哪种格式才能让yolo正常检测?
= yolo.run(img)这一步会导致系统卡死,应该是图片格式不符合
yolo用的自训练yolov11模型,使用默认的板载摄像头没有问题。
软硬件版本信息
立创庐山派CANMV
发表于 06-13 07:55
请问K230D怎么将摄像头采集的视频数据通过串口输出?
我连了个WiFi模块,想要将摄像头采集的视频数据通过串口发送出去。之前都是用的STM32,不太会MicroPython,搞不懂对象的数据结构,求教。
发表于 04-28 06:16
K230模型同时给两个摄像头使用出现报错怎么解决?
=240)。一个摄像头rgb888p_img从它的通道2获取用来AI推理的图像,另一个rgb888p_img2从它的通道1获取用来AI推理的图像
发表于 03-11 06:14
在摄像头采集回来画面并进行视频输出画面时,如何可以在屏幕上查看放大后的视频画面?
在摄像头采集回来画面并进行视频输出画面时,如何可以在屏幕上查看放大后的视频画面,相当于是图片中心放大,只看屏幕中心部分。类似相机zoom的效果
发表于 02-08 08:14
基于RK3588的AI摄像头应用解决方案
随着人工智能(AI)技术的快速发展,越来越多的视频监控系统开始直接在摄像头上部署AI分析,视频监控从早期的图像记录发展到如今具备AI运算能力和算法,可进行目标识别、行为分析以及事件反馈

Termux手机摄像头采集图像/视频流 部署 YOLO 模型推理
评论