banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[Python] OpenCVを使用して画像とビデオの変換操作を実行する

FPS でビデオをフレームごとに分割する cv2.VideoCapture cv2.VideoCapture (video_path) を使用して FPS を計算します。一部の圧縮ビデオでは FPS がフレームの欠落が発生するため、フレームをスキップする処理が必要です。 fps = int (vidcap.get (cv2.CAP_PROP_FPS))

def video_split():
video_path = 'test/video/video_01.mp4'
video_name = video_path[:-4]
vidcap = cv2.VideoCapture(video_path)
success,image = vidcap.read()
fps = int(vidcap.get(cv2.CAP_PROP_FPS))
count = 0
while success:
image = image_process(image)
cv2.imwrite("%s/%d.jpg" % (video_name, count), image)
#if count % fps == 0:
# cv2.imwrite("%s/%d.jpg" % (video_name, int(count / fps)), image)
print('Process %dth seconds: ' % int(count / fps), success)
success,image = vidcap.read()
count += 1

複数の画像を結合してビデオを作成する cv2.VideoWriter fourcc = cv2.VideoWriter_fourcc ('D', 'I', 'V', 'X') #異なるビデオエンコードに対応する異なるビデオ形式(例:'I','4','2','0' は avi 形式に対応) video = cv2.VideoWriter ( file_path, fourcc, fps, size)

def video_combine():
path = 'test/video/video_01/'# ファイルパス
filelist = os.listdir (path) #このディレクトリ内のすべてのファイル名を取得
filelist.sort(key=alphanum_key)
fps = 6
size = (580,420) #画像の解像度
file_path = 'test/video/video_01_out.mp4'# エクスポートパス
fourcc = cv2.VideoWriter_fourcc ('D', 'I', 'V', 'X') #異なるビデオエンコードに対応する異なるビデオ形式(例:'I','4','2','0' は avi 形式に対応)
video = cv2.VideoWriter( file_path, fourcc, fps, size)

for item in filelist:
    if item.endswith('.png'):     #画像の拡張子が.pngかどうかを判断
        item = path + '/' + item 
        image = cv2.imread(item)  #OpenCVを使用して画像を読み込み、numpy.ndarrayオブジェクトを直接返します。チャンネルの順序はBGRで、チャンネル値のデフォルト範囲は0-255です。
        video.write(image)        #画像をビデオに書き込む
video.release() #解放

現在、CV_FOURCC を使用してエンコード形式を取得しています: CV_FOURCC ('P', 'I', 'M', '1') = MPEG-1 コーデック CV_FOURCC ('M', 'J', 'P', 'G') = motion-jpeg コーデック CV_FOURCC ('M', 'P', '4', '2') = MPEG-4.2 コーデック CV_FOURCC ('D', 'I', 'V', '3') = MPEG-4.3 コーデック CV_FOURCC ('D', 'I', 'V', 'X') = MPEG-4 コーデック CV_FOURCC ('U', '2', '6', '3') = H263 コーデック CV_FOURCC ('I', '2', '6', '3') = H263I コーデック CV_FOURCC ('F', 'L', 'V', '1') = FLV1 コーデック

参考: https://blog.csdn.net/errors\_in\_life/article/details/72809580 http://www.fjii.com/yw/2018/0919/182870.shtml

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。