自动监测阀门开关

张开发
2026/4/9 10:52:26 15 分钟阅读

分享文章

自动监测阀门开关
好我直接给你完全傻瓜版、一步一步、闸阀 YOLOv8n 动素分析全套流程你照着点、照着复制粘贴就能跑通不用懂原理也能做。我会写得非常细细到“点哪里、输什么、按哪个键”。0. 先确认你现在有什么- 台式电脑Windows- USB 摄像头- 闸阀静态能拍“开”“关”两种状态- 你选闸阀、YOLOv8n我下面全部按这个来。1. 第一步安装 Python必须做1.1 下载 Python打开浏览器 → 搜索Python 3.10.11 windows 64位进入官网下载Windows Installer (64-bit)1.2 安装关键运行安装包时✅ 一定要勾Add Python to PATH然后点 Install Now1.3 测试是否装好按 Win R → 输入 cmd 打开黑框输入plaintextpython --versionpip --version出现版本号就成功。2. 第二步安装 YOLOv8n 需要的库打开 cmd依次输入下面三行每行按回车plaintextpip install ultralyticspip install opencv-pythonpip install pillow出现 Successfully 就成功。3. 第三步在桌面建文件夹固定结构不许乱改在桌面新建文件夹名字固定plaintextvalve_zha里面再建 2 个文件夹plaintextimageslabels最终结构plaintext桌面/valve_zha/├─ images/ 放闸阀照片└─ labels/ 自动生成4. 第四步用摄像头拍闸阀照片4.1 拍两种状态1. 闸阀开2. 闸阀关每种状态拍 3050张角度稍微变一变近、远、左、右。全部放进plaintext桌面/valve_zha/images5. 第五步安装标注工具 LabelImg告诉电脑什么是开/关cmd 输入plaintextpip install labelImg安装完直接输入启动plaintextlabelImg5.2 标注步骤照做1. 点 Open Dir → 选 images 文件夹2. 点 Change Save Dir → 选 labels 文件夹3. 左边把格式改成 YOLO4. 点 Create RectBox5. 用框把整个闸阀框住6. 弹出输入框输入- 开的图 open- 关的图 close7. 点 Save8. 点下一张重复原理告诉电脑“框里是闸阀状态是open/close”YOLO才能学习。6. 第六步新建配置文件 valve.yaml在 valve_zha 文件夹里新建文本文档改名plaintextvalve.yaml打开把下面内容完整复制粘贴进去yamlpath: C:/Users/你的用户名/Desktop/valve_zhatrain: imagesval: imagesnc: 2names: [open,close]把 你的用户名 换成你电脑真实用户名例如plaintextpath: C:/Users/ZhangSan/Desktop/valve_zha7. 第七步训练 YOLOv8n 模型核心在 valve_zha 里新建文件plaintexttrain.py粘贴代码pythonfrom ultralytics import YOLO# 用 YOLOv8n 最轻量模型model YOLO(yolov8n.pt)model.train(datavalve.yaml,epochs50,imgsz640,batch2,devicecpu)7.2 运行训练在文件夹空白处 按住 Shift 右键 → 在此处打开 PowerShell输入plaintextpython train.py等待训练出现plaintextTraining complete就成功。模型保存在plaintextruns/detect/exp/weights/best.pt8. 第八步摄像头实时检测闸阀开/关新建文件plaintextdetect.py粘贴完整代码直接用pythonfrom ultralytics import YOLOimport cv2# 加载你训练好的闸阀模型model YOLO(runs/detect/exp/weights/best.pt)# 打开摄像头cap cv2.VideoCapture(0)print(按 q 退出)while True:ret, frame cap.read()if not ret:break# 推理res model(frame)# 画框frame res[0].plot()# 显示cv2.imshow(Gate Valve Detect (YOLOv8n), frame)if cv2.waitKey(1) 0xFF ord(q):breakcap.release()cv2.destroyAllWindows()运行plaintextpython detect.py你会看到- 闸阀被框住- 显示 open 或 close- 置信度百分比9. 第九步动素分析闸阀操作动作拆解下面给你专门针对闸阀操作的动素分析。动素Therbligs我们只拆最常用 6 个1. 伸手2. 抓取手轮3. 旋转4. 对准5. 放回6. 等待9.1 动素分析代码 motion.py新建 motion.py pythonfrom ultralytics import YOLOimport cv2# 用 yolov8n 检测手(人)model YOLO(yolov8n.pt)cap cv2.VideoCapture(0)print( 闸阀操作动素分析 )print(1.伸手 2.抓取 3.旋转 4.对准 5.放回 6.等待)last_state 等待while True:ret, frame cap.read()if not ret:break# 只检测人0代表personres model(frame, classes[0])boxes res[0].boxesif len(boxes) 0:# 手出现cx1 boxes[0].xyxy[0][0]cy1 boxes[0].xyxy[0][1]cx2 boxes[0].xyxy[0][2]cy2 boxes[0].xyxy[0][3]hand_height cy2 - cy1if hand_height 100:state 伸手elif 100 hand_height 200:state 抓取手轮else:state 旋转/操作中else:state 等待/放回if state ! last_state:print(当前动素, state)last_state statecv2.imshow(Therblig Motion Analysis - Gate Valve, res[0].plot())if cv2.waitKey(1) 0xFF ord(q):breakcap.release()cv2.destroyAllWindows()运行plaintextpython motion.py控制台会输出plaintext当前动素伸手当前动素抓取手轮当前动素旋转/操作中当前动素等待/放回这就是闸阀操作动素分析用来判断动作是否标准、有没有多余动作。10. 最终整合闸阀状态 动素一起显示你最终要的新建 final.py pythonfrom ultralytics import YOLOimport cv2valve_model YOLO(runs/detect/exp/weights/best.pt)person_model YOLO(yolov8n.pt)cap cv2.VideoCapture(0)while True:ret, frame cap.read()if not ret:break# 检测闸阀res_valve valve_model(frame)# 检测人/手res_person person_model(frame, classes[0])# 叠加显示frame res_valve[0].plot()frame res_person[0].plot()# 动素判断if len(res_person[0].boxes) 0:motion 操作中伸手/抓取/旋转else:motion 无操作等待# 把动素写在画面上cv2.putText(frame, fMotion: {motion},(10, 50), cv2.FONT_HERSHEY_SIMPLEX, 1,(0, 255, 255), 2)cv2.imshow(Gate Valve Therblig Analysis, frame)if cv2.waitKey(1) 0xFF ord(q):breakcap.release()cv2.destroyAllWindows()运行plaintextpython final.py画面同时显示- 闸阀open / close- 手部检测框- 动素状态你现在只需要回复我3个信息我就能帮你彻底跑通1. 你电脑用户名是什么2. 摄像头是 0 号设备吗3. 训练时有没有报错我可以直接帮你改好路径、一键运行。

更多文章