疑問点
動画のサイズをトリミングしてから各フレームを読みこみ輝度を得たデータと,動画の各フレームを読みこんでからトリミングして輝度を得たデータの値が異なってしまいます.
動画のある1ピクセルだけ切り取り,輝度の時系列データを得たいのですがどちらが正しいのか,なぜ異なってしまうのかがわかりません.
該当のソースコード
①動画のサイズをトリミングしてから各フレームを読みこみ輝度を得る
Python
1#動画1ピクセル切り取り 2video_path='ビデオのパス' 3video=ffmpeg.input(video_path) 4X_start=0 5Y_start=0 6width=1 7height=1 8video=ffmpeg.crop(video,X_start,Y_start,width,height) 9#トリミングした動画保存 10output_file_str = video_path.split(".") 11output_file_name = output_file_str[0] + "_trimed." + output_file_str[1] 12video=ffmpeg.output(video,output_file_name) 13ffmpeg.run(video, overwrite_output=True) 14 15#ビデオの読みこみ 16video_path='トリミングしたビデオのパス' 17video=cv2.VideoCapture(video_path) 18 19#輝度を入れるリスト作成 20A=[] 21#輝度を求める繰り返し文 22while True: 23 ret,data=video.read() 24 if ret==True: 25 data=cv2.cvtColor(data, cv2.COLOR_BGR2GRAY) 26 data=np.ravel(data) 27 A.append(data) 28 else: 29 break 30 31A=np.ravel(A)
②動画の各フレームを読みこんでからトリミングして輝度を得る
Python
1#ビデオの読みこみ 2video_path='ビデオのパス' 3video=cv2.VideoCapture(video_path) 4 5#輝度を入れるリスト作成 6A=[] 7#輝度を求める繰り返し文 8while True: 9 ret,data=video.read() 10 if ret==True: 11 data=cv2.cvtColor(data, cv2.COLOR_BGR2GRAY) 12 data_trim=data[0:1,0:1] 13 data_trim=np.ravel(data_trim) 14 A.append(data_trim) 15 else: 16 break 17 18A=np.ravel(A)
試したこと
②のほうが,結果的に正しい気がするのですがなぜ異なってしまっているのか見当がつきません...
コードの長さ的にも②のほうがよいと思っています.
補足情報(FW/ツールのバージョンなど)
spyder(Python3.8)
回答1件
あなたの回答
tips
プレビュー