赞
踩
以给视频中某个区域添加mask为例
import cv2 import numpy as np def image_pre(img): # binary mask mask_threth = 50 coordinates = [[[200, 150], [250, 150], [250, 350], [200, 350]]] coordinates = np.array(coordinates) mask = np.zeros(img.shape[:2], dtype=np.int8) mask = cv2.fillPoly(mask, coordinates, 255) bbox_mask = (mask > mask_threth).astype(np.uint8) # draw the masked image color_mask = np.random.randint(0, 256, (1, 3), dtype=np.uint8) color_mask = np.array([0, 0, 0], dtype=np.uint8) bbox_mask = bbox_mask.astype(np.bool) # img[bbox_mask] = img[bbox_mask] * 0.5 + color_mask * 0.5 img[bbox_mask] = img[bbox_mask] * 0 + color_mask img = img[:, :, ::-1] return img cap = cv2.VideoCapture('pedestrian/pedestrian.mp4') fourcc = cv2.VideoWriter_fourcc(*'XVID') fps =cap.get(cv2.CAP_PROP_FPS) size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) out = cv2.VideoWriter('pedestrian/pedestrian_mask.mp4',fourcc, fps, size) while(cap.isOpened()): ret, frame = cap.read() if ret==True: # frame = cv2.flip(frame,0) frame = image_pre(frame) out.write(frame) cv2.imshow('frame',frame) # 按q退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 按s暂停,再按任意键继续 if (cv2.waitKey(1) & 0xFF) == ord('s'): cv2.waitKey(0) else: break cap.release() out.release() cv2.destroyAllWindows()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。