首先要利用VideoCapture读入视频信息。采用颜色追踪的方法来确定小球位置,查找遮罩图的轮廓,确定该轮廓的包围框,将包围框的中心作为乒乓球的位置,更新乒乓球位置
具体代码:
import cv2
import numpy as np
def empty(a):
pass
def draw_direction(img, lx, ly, nx, ny):
dx = nx - lx
dy = ny - ly
if abs(dx) < 4 and abs(dy) < 4:
dx = 0
dy = 0
else:
r = (dx**2 + dy**2)**0.5
dx = int(dx/r*40)
dy = int(dy/r*40)
cv2.arrowedLine(img, (60, 100), (60+dx, 100+dy), (0, 255, 0), 2)#窗口设定
frameWidth = 640
frameHeight = 480
cap = cv2.VideoCapture("pingpangqiu.mp4")
cap.set(3, frameWidth)
cap.set(4, frameHeight)
cap.set(10, 80) # 设置亮度
pulse_ms = 30
lower = np.array([4, 180, 156]) # 橙色乒乓球4<=h<=32
upper = np.array([32, 255, 255])
targetPos_x = 0
targetPos_y = 0
lastPos_x = 0
lastPos_y = 0
while True:
_, img =