直接コーディング
"" " ビデオから画像" ""
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枚全て黒画面でしたが、合成映像が出ませんでしたが、いつも黒画面が点滅していたので、削除しても大丈夫です。