def solve_video(): cap = cv2.VideoCapture('ir.mp4') ret, frame = cap.read() prev = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) prev = cv2.GaussianBlur(prev, (5, 5), .7).astype(np.float32).view(hmarray) hsv = np.zeros_like(frame) hsv[..., 1] = 255 hm_u = hm.zeros_like(prev) hm_v = hm.zeros_like(prev) while True: if frame is None: break curr = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) curr = cv2.GaussianBlur(curr, (5, 5), .7).astype(np.float32).view(hmarray) hm_u, hm_v = hs_jacobi(prev, curr, hm_u, hm_v) hm_u.sync_host() hm_v.sync_host() mag, ang = cv2.cartToPolar(hm_u, hm_v) mag = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) ang = ang * 180 / np.pi / 2 hsv[..., 0] = ang hsv[..., 2] = mag flow = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imshow('flow', flow) if cv2.waitKey(1) & 0xFF == ord('q'): break prev = curr cap.release()
def solve_video(): cap = cv2.VideoCapture('ir.mp4') ret, frame = cap.read() prev = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) prev = cv2.GaussianBlur(prev, (5, 5), .7).astype(np.float32).view(hmarray) hsv = np.zeros_like(frame) hsv[..., 1] = 255 hm_u = hm.zeros_like(prev) hm_v = hm.zeros_like(prev) while True: if frame is None: break curr = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) curr = cv2.GaussianBlur(curr, (5, 5), .7).astype(np.float32).view(hmarray) hm_u, hm_v = hs_jacobi(prev, curr, hm_u, hm_v) hm_u.sync_host() hm_v.sync_host() mag, ang = cv2.cartToPolar(hm_u, hm_v) mag = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) ang = ang*180/np.pi/2 hsv[..., 0] = ang hsv[..., 2] = mag flow = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imshow('flow', flow) if cv2.waitKey(1) & 0xFF == ord('q'): break prev = curr cap.release()
def solve(): frame0 = cv2.imread('images/frame0.png') frame1 = cv2.imread('images/frame1.png') # cap = cv2.VideoCapture('ir.mp4') # ret, frame0 = cap.read() hsv = np.zeros_like(frame0) im0 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u = hm.zeros_like(im0) hm_v = hm.zeros_like(im0) im1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u, hm_v = hs_jacobi(im0, im1, hm_u, hm_v) hm_u.sync_host() hm_v.sync_host() mag, ang = cv2.cartToPolar(hm_u, hm_v) mag = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) ang = ang * 180 / np.pi / 2 hsv[..., 1] = 255 hsv[..., 0] = ang hsv[..., 2] = mag flow = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imshow('flow', flow) cv2.waitKey()
def solve_single_image(): frame0 = cv2.imread('images/frame0.png') frame1 = cv2.imread('images/frame1.png') im0 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) im1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u = hm.zeros_like(im0) hm_v = hm.zeros_like(im0) It = zeros_like(hm_u) Iy = zeros_like(hm_u) Ix = zeros_like(hm_u) denom = zeros_like(hm_u) new_u = zeros_like(hm_u) new_v = zeros_like(hm_u) hm_u, hm_v = hs_jacobi(im0, im1, hm_u, hm_v, Ix, Iy, It, denom, new_u, new_v) hm_u.sync_host() hm_v.sync_host() mag, ang = cv2.cartToPolar(hm_u, hm_v) mag = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) ang = ang*180/np.pi/2 hsv = np.zeros_like(frame1) hsv[..., 1] = 255 hsv[..., 0] = ang hsv[..., 2] = mag flow = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imshow('flow', flow) cv2.waitKey()
def solve_single_image(): frame0 = cv2.imread('images/frame0.png') frame1 = cv2.imread('images/frame1.png') im0 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) im1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u = hm.zeros_like(im0) hm_v = hm.zeros_like(im0) It = zeros_like(hm_u) Iy = zeros_like(hm_u) Ix = zeros_like(hm_u) denom = zeros_like(hm_u) new_u = zeros_like(hm_u) new_v = zeros_like(hm_u) hm_u, hm_v = hs_jacobi(im0, im1, hm_u, hm_v, Ix, Iy, It, denom, new_u, new_v) hm_u.sync_host() hm_v.sync_host() mag, ang = cv2.cartToPolar(hm_u, hm_v) mag = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) ang = ang * 180 / np.pi / 2 hsv = np.zeros_like(frame1) hsv[..., 1] = 255 hsv[..., 0] = ang hsv[..., 2] = mag flow = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imshow('flow', flow) cv2.waitKey()
def solve(): frame0 = cv2.imread('images/frame0.png') frame1 = cv2.imread('images/frame1.png') # cap = cv2.VideoCapture('ir.mp4') # ret, frame0 = cap.read() hsv = np.zeros_like(frame0) im0 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u = hm.zeros_like(im0) hm_v = hm.zeros_like(im0) im1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u, hm_v = hs_jacobi(im0, im1, hm_u, hm_v) hm_u.sync_host() hm_v.sync_host() mag, ang = cv2.cartToPolar(hm_u, hm_v) mag = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX) ang = ang*180/np.pi/2 hsv[..., 1] = 255 hsv[..., 0] = ang hsv[..., 2] = mag flow = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR) cv2.imshow('flow', flow) cv2.waitKey()
@compose def hs_jacobi(im0, im1, u, v): It = im1 - im0 Iy = Convolve2D(im1, dy) Ix = Convolve2D(im1, dx) denom = Square(Ix) + Square(Iy) + alpha2 for _ in range(100): ubar = Convolve2D(u, jacobi) vbar = Convolve2D(v, jacobi) t = (Ix * ubar + Iy * vbar + It) / denom u_new = ubar - Ix * t v_new = vbar - Iy * t u, v = u_new, v_new return u, v frame0 = cv2.imread('images/frame0.png') frame1 = cv2.imread('images/frame1.png') # cap = cv2.VideoCapture('ir.mp4') # ret, frame0 = cap.read() hsv = np.zeros_like(frame0) im0 = cv2.cvtColor(frame0, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u = hm.zeros_like(im0) hm_v = hm.zeros_like(im0) im1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY).astype(np.float32).view(hmarray) hm_u, hm_v = hs_jacobi(im0, im1, hm_u, hm_v) hs_jacobi.composed.dump_kernels()