動画内のある点に対する他の点の強度の相関関係をマッピングするプログラムを作成しました。強度は((R+G+B)/3)としています。
コードは以下になります。
”場所を決める”と書かれている所に座標を指定します。この指定した点に対する他の全ての相関関係をマッピングしたプログラムとなっております。
ここで質問なのですが、指定した点に対するタイムラグを与えた他の箇所の相関関係を算出するためにはどのような処理を施せばよいのでしょうか?
どうしてもタイムラグを与えることができません
どなたかご教授よろしくお願い致します。
python3
1# -*- coding: utf-8 -*- 2import time 3#from urllib.request import urlretrieve 4 5import cv2 6from numpy import * 7import matplotlib.pyplot as plt 8 9start = time.time() 10 11# サンプル用動画をダウンロードする。 12video = "clean50_edit_denoise.mkv" 13#video_url = "https://github.com/opencv/opencv/raw/master/samples/data/vtest.avi" 14#urlretrieve(video_path) 15 16# 場所を決める 17#点滅の場所 18xpx=int(raw_input("点滅1 X:")) 19ypx=int(raw_input("点滅1 Y:")) 20 21lag = int(raw_input("lag (frm):")) 22 23 24# 動画の全フレームを読み込む。 25cap = cv2.VideoCapture(video) 26count = cap.get(cv2.CAP_PROP_FRAME_COUNT) # number of frames 27# 1フレームずつ取得する。 28frames = [] 29while True: 30 ret, frame = cap.read() 31 if not ret: 32 break 33 frames.append(frame) 34#print(imgs) 35#a=array(imgs) 36#print(a.shape) 37frames = array(frames) 38 39frames=mean(frames, axis=-1) 40 41# ピクセルごとに相関係数を計算する。 42x0, y0 = xpx, ypx # 対称とする点 43 44h, w = frames.shape[1:3] # 画像の幅、高さ 45vec1 = frames[:, y0, x0] 46#print(vec1) 47corr_img = empty((h, w)) 48 49for y in range(h): 50 for x in range(w): 51 vec2 = frames[:, y, x] 52 # 相関行列を計算する。 53 C = corrcoef(vec1, vec2) 54 corr_img[y, x] = C[0, 1] # x, y の相関係数 55 56#print(f"Done! {time.time() - start}s") # 66.96258449554443s 57 58#tPoints=arange(len(intensity1))*(1/fps) 59 60fig, ax = plt.subplots() 61ax.invert_yaxis() 62#im=ax.imshow(std,cmap="gray") 63ax.set_title("Correlation map ") 64#plt.pcolor(std1,cmap="jet") 65#plt.imshow(std, cmap="jet",vmin=0,vmax=32) 66plt.imshow(corr_img, cmap="jet",vmin=-1,vmax=1) 67plt.colorbar() 68plt.show()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/26 00:59