Python自动化目标检测核心是调用预训练模型快速识别,推荐YOLOv5/v8/v10的torch.hub版或OpenCV DNN模块;输入支持批量图片、视频文件及摄像头/RTSP流。

在Python自动化脚本项目中做目标检测,核心是把图像或视频里的特定物体“找出来并标出来”,不是训练模型,而是调用已有模型快速完成识别任务。重点在于环境搭得稳、数据喂得对、结果拿得准。
选一个轻量又靠谱的检测模型
新手别一上来就折腾YOLOv8源码训练——直接用官方封装好的推理接口更高效:
- 推荐YOLOv5/v8/v10的torch.hub版:一行代码加载预训练模型,支持CPU/GPU自动切换
- OpenCV自带的DNN模块也能跑YOLO、SSD等ONNX或TensorFlow模型,部署简单、依赖少
- 如果只检常见物体(人、车、猫狗),用MobileNet-SSD这类小模型,1秒能跑几十帧,适合嵌入式或定时巡检脚本
准备输入:图片/视频/摄像头流怎么喂进去
自动化脚本常要处理批量文件或实时流,注意格式和路径处理:
- 批量图:用glob.glob("imgs/*.jpg")遍历,逐张读取cv2.imread()
- 视频文件:cv2.VideoCapture("video.mp4"),配合ret, frame = cap.read()循环取帧
- USB摄像头或RTSP流:把路径换成0(本地摄像头)或,加异常捕获防断连崩溃
- 关键细节:确保图像尺寸适配模型输入(如YOLO常用640×640),用cv2.resize()前先保持宽高比缩放+补黑边
推理+后处理:拿到框、类别、置信度
模型输出是原始数组,需解码成可用坐标。以YOLOv5为例:
立即学习“Python免费学习笔记(深入)”;
- 调用model(img)得到results对象,用results.xyxy[0].cpu().numpy()转为N×6数组
- 每行是[x1, y1, x2, y2, conf, cls],直接切片就能取坐标和置信度
- 加个conf > 0.5过滤低置信结果;用cv2.rectangle()画框,cv2.putText()打标签
- 想存结果?用cv2.imwrite("out.jpg", img_with_boxes) 或写入CSV记录坐标和类别
集成进自动化流程:定时/触发/上报不卡壳
检测只是中间一环,要让它真正“自动”起来:
- 用schedule库定时执行(比如每5分钟扫一次监控截图目录)
- 监听文件夹变化可用watchdog,新图一落盘立刻检测
- 检测到目标后,发微信/邮件用requests.post调企业微信机器人,或写进数据库用sqlite3
- 加日志:logging.info(f"检测到{len(boxes)}个目标"),方便排查漏检或误检
基本上就这些。不复杂但容易忽略细节——比如没检查图像通道顺序(BGR/RGB)、没释放VideoCapture、没设置置信度阈值。跑通一次,后面复制粘贴改改路径和类别就能复用。










