基于标准平方差的视频追踪

    科技2022-08-04  115

    import cv2 videoPath = 'Resources/video01.mp4' videoSave = 'Resources/videoMarked02.mp4' cap = cv2.VideoCapture(videoPath) fps = int(round(cap.get(cv2.CAP_PROP_FPS)))#获取视频帧数 width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取视频宽度 height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取视频高度 fourcc = cv2.VideoWriter_fourcc(*'XVID')#获取视频格式 videoWriter = cv2.VideoWriter(videoSave, fourcc, fps, (width, height))#创建视频写入流 template = cv2.imread('Resources/template03.png') # 获得模板图片的高宽尺寸 theight, twidth = template.shape[:2] while True: ret, target = cap.read()#读取视频帧 if not ret: break # 执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED(平方差匹配法) result = cv2.matchTemplate(target, template, cv2.TM_SQDIFF_NORMED) # 归一化处理 cv2.normalize(result, result, 0, 1, cv2.NORM_MINMAX, -1) # 寻找矩阵(一维数组当做向量,用Mat定义)中的最大值和最小值的匹配结果及其位置 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) cv2.rectangle(target, min_loc, (min_loc[0] + twidth, min_loc[1] + theight), (0, 255, 225), 2) videoWriter.write(target)#写入视频 videoWriter.release()
    Processed: 0.057, SQL: 8