■ オプティカルフローのテスト
OpenCVで生成したオプティカルフローをUnityで補間してみた。
パラメータもほとんど調整せず適当なままだけど、わりとそれっぽく動いてる。オプティカルフローのテクスチャ生成自体はそこまでシビアではないのかも。
よく見ると広がる先端でブレンドの様子が見えたり、フレームの境目でフローマップの向きがずれて補間が目立つ瞬間もあるので、ここからコマを抜いたりした時にどこまで耐えられるか。
OpenCVでフローマップ生成のpythonスクリプト:
import numpy as np import cv2 def readFile(path,filename, start, end): for no in range(start, end): fname0 = path+filename+str(no)+".png" fname1 = path+filename+str(no+1)+".png" frame1 = cv2.imread(fname0) frame2 = cv2.imread(fname1) prev = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY) next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY) flow = cv2.calcOpticalFlowFarneback(prev,next, None, 0.5, 3, 2, 3, 3, 1.1, 0) flow[...,0] *= 2.5 flow[...,1] *= 2.5 flow[...,0] += 128 flow[...,1] += 128 rgb = np.zeros_like(frame1) rgb[...,0] = flow[...,0] rgb[...,1] = flow[...,1] rgb[...,2] = 0 rgb = cv2.cvtColor(rgb,cv2.COLOR_BGR2RGB) fname_save = path+"opt_"+filename+str(no)+".png" cv2.imwrite(fname_save, rgb ) cv2.imshow('frame1',frame1) cv2.imshow('frame2',frame2) cv2.imshow('rgb',rgb) cv2.waitKey() # 作成したウィンドウを全て破棄 cv2.destroyAllWindows() readFile("./Explosion0/","Exprosion0_",1,53)