悪いリンゴの2番目のステップを実行する:ビデオをPythonでフレーム化された画像に変換する方法、フレーム化された画像をビデオに変換する方法

直接コーディング

"" " ビデオから画像" ""
CV2ポート
DEF GetPhoto(VIDEO_IN video_save):
CAP = cv2.VideoCapture(VIDEO_IN) は、ビデオファイル開く
n_framesのを= INT(cap.get(cv2.CAP_PROP_FRAME_COUNT))ビデオのフレーム数
FPS = cap.get(cv2.CAP_PROP_FPS)のビデオフレームレート
n_frames = / FPSのDUR 時間ビデオ
num_frame = 0
ジャッジ= cap.isOpened()
一方、裁判官:
フラグに、フレーム= cap.read()フラグ位は状態、読み取られたフレームの次のフレーム
cv2.imshow ('video' 、frame)cv2.waitKey(0)== 27の場合にキャプチャ中断


ifフラグ:
num_frame + = 1 #print( " Saving %d photo "%num_frame)#cv2.imwrite( 'a \\' + str(num_frame)+ '.jpg'、frame)#cv2.imwrite( ' パス' + ' 名前' + ' サフィックス' 、保存するフレーム#cv2.waitKey(1)##new_path = str(num_frame)+ '.jpg' ##cv2.imencode( '。Jpg'、frame) [1] .tofile(new_path)else:break print(" Video duration :%d seconds "%dur)print(" Video total frames :%d 保存されたフレーム:%d"%(n_frames 、num_frame))print (1秒あたりのフレーム数










(FPS):%.1lf "%fps)

def main():
video_in = 'apple.flv'
video_save = ' 2th '
getphoto(video_in 、video_save)if __name__ == ' __main__ ':main()




"" " 画像からビデオ" ""
インポートCV2 
インポートOS

DEF getvideo(photo_path 、VIDEO_NAME 、FPS):
ファイル一覧= os.listdir(photo_path)
サイズ=(1440 1080)
映像= cv2.VideoWriter(VIDEO_NAME 、cv2.VideoWriter_fourcc('I' '4' ' 2 ' ' 0 ')、fps 、size)
num = int(0)
for filelistのアイテム#print
(item)
num + = 1 print(' 转化到%d '%num)if item.endswith(' .jpg '):item = photo_path + item



img = cv2.imread(item)
video.write(img)
video.release()
cv2.destroyAllWindows()

def main():
photo_path = 'E:\\ try apple \\ aa \\ '
video_name = 'new.avi '
fps = 30
getvideo(photo_path 、video_name 、fps)

if if __name__ == ' __main__ ':
main()
 

私が言いたいのは、画像がビデオに変換されるときに、画像のピクセルサイズを間違ってはいけないということです。BaiChenからBaiduまでのバグを探しています。

あるファイルリスト= os.listdir(photo_path)2次元配列のような、この事は辞書式順序で出力ファイル名の後に発見されていないが、しかし、奇妙なことが明らかに順序の画像を読み取るものではなく、合成後の映像は、正しいことが判明しましたの。ただし、画像に同じ画像が含まれている場合は、合成されたビデオで常に同じ画像が点滅します。

500枚撮ってみたところ、最初は50枚全て黒画面でしたが、合成映像が出ませんでしたが、いつも黒画面が点滅していたので、削除しても大丈夫です。

おすすめ

転載: www.cnblogs.com/philo-zhou/p/12702769.html