基于机器学习的捡球机器人设计与实现(探索)第6篇——另一种高效追踪网球思路
生活随笔
收集整理的這篇文章主要介紹了
基于机器学习的捡球机器人设计与实现(探索)第6篇——另一种高效追踪网球思路
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019-03-22 by 崔斐然
???
剩余工作:添加幀率顯示
import numpy as np import cv2 from collections import deque import argparseap = argparse.ArgumentParser() ap.add_argument("-v", "--video",help="path to the (optional) video file") ap.add_argument("-b", "--buffer", type=int, default=64,help="max buffer size") args = vars(ap.parse_args())cap = cv2.VideoCapture(0)greenLower = (29, 86, 6) greenUpper = (64, 255, 255) pts = deque(maxlen=args["buffer"])while (True):# Capture frame-by-frameret, frame = cap.read()# Display the resulting framehsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)green_mask = cv2.inRange(hsv, greenLower, greenUpper)green_mask = cv2.erode(green_mask, None, iterations=2)green_mask = cv2.dilate(green_mask, None, iterations=2)cnts = cv2.findContours(green_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[1]center = Noneif len(cnts) > 0:c = max(cnts, key=cv2.contourArea)((x, y), radius) = cv2.minEnclosingCircle(c)M = cv2.moments(c)center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))if radius > 10:cv2.circle(frame, (int(x), int(y)), int(radius),(0, 255, 255), 2)cv2.circle(frame, center, 5, (0, 0, 255), -1)pts.appendleft(center)for i in range(1, len(pts)):if pts[i - 1] is None or pts[i] is None:continuethickness = int(np.sqrt(args["buffer"] / float(i + 1)) * 2.5)cv2.line(frame, pts[i - 1], pts[i], (0, 0, 255), thickness)cv2.imshow("Frame", frame)if cv2.waitKey(1) & 0xFF == ord('q'):break cap.release() cv2.destroyAllWindows()總結(jié)
以上是生活随笔為你收集整理的基于机器学习的捡球机器人设计与实现(探索)第6篇——另一种高效追踪网球思路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于机器学习的捡球机器人设计与实现(探索
- 下一篇: 树莓派一键备份脚本 备份为img镜像 可