python3
1# -*- coding: utf-8 -*- 2import cv2 3import matplotlib.pyplot as plt 4from numpy import * 5from sklearn import datasets 6from sklearn import cluster 7from scipy.cluster.hierarchy import linkage, dendrogram, fcluster 8 9video_path = "water50_2.mkv" 10cap = cv2.VideoCapture(video_path) 11 12count = cap.get(cv2.CAP_PROP_FRAME_COUNT) 13fps = cap.get(cv2.CAP_PROP_FPS) 14 15numS=raw_input("start frame: ") 16numS=int(numS) 17 18numE=raw_input("end frame: ") 19numE=int(numE) 20#numE=count 21print(numE) 22 23# 場所を決める 24#点の場所 25x1min=raw_input("点滅1左上のx座標:") 26y1min=raw_input("点滅1左上のy座標:") 27x1max=raw_input("点滅1右下のx座標:") 28y1max=raw_input("点滅1右下のy座標:") 29 30X1min=int(x1min) 31Y1min=int(y1min) 32X1max=int(x1max) 33Y1max=int(y1max) 34 35#ノイズの場所 36xnoisemin=raw_input("左上ノイズx座標:") 37ynoisemin=raw_input("左上ノイズy座標:") 38xnoisemax=raw_input("右下ノイズx座標:") 39ynoisemax=raw_input("右下ノイズy座標:") 40 41Xnoisemin=int(xnoisemin) 42Ynoisemin=int(ynoisemin) 43Xnoisemax=int(xnoisemax) 44Ynoisemax=int(ynoisemax) 45 46# フレーム [numS,numE] の範囲で各フレームの [ymin, ymax]x[xmin, xmax] の画素の平均を計算する。 47frame_no = arange(numS,numE) 48intensity1 = [] 49intensitynoise=[] 50for i in frame_no: 51 # フレーム frame_no を取得する。 52 cap.set(cv2.CAP_PROP_POS_FRAMES, i) 53 ret, frame = cap.read() 54 if not ret: 55 print('Failed to grab frame.') 56 break 57 # 平均画素値を計算する。 58 intensity1.append(frame[Y1min:Y1max+1, X1min:X1max+1].mean()) 59 intensitynoise.append(frame[Ynoisemin:Ynoisemax+1, Xnoisemin:Xnoisemax+1].mean()) 60 print "frame number ",i 61 62#plt.plot(intensity1,intensitynoise,'x') 63corr=corrcoef(intensity1,intensitynoise) 64a=corr[0,1] 65print(a) 66 67X=stack([intensity1,intensitynoise], axis=1) 68Z=linkage(X,method ="ward",metric="euclidean") 69print(Z) 70 71plt.xlabel("intensity left") 72plt.ylabel("intensity right") 73plt.title("Correlation coefficient:%s"%a) 74plt.show()
intensity1とintensitynoiseをplotすることで相関関係を得ることができます。下図参照
大きく2ヶ所に分かれているように見えるので、これをウォード法を用いた階層的手法でクラスタリングを行ない、色分けをしたいのですが、上記のコードからどう書けばいいか分かりません。どなたかよろしくお願い致します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/09/24 02:47
2019/09/24 09:31