동영상 파일에서 프레임을 나란히 썸네일 만들기
첫 번째 프레임을 메인 이미지로 만들고 그 아래에 미리보기 이미지를 정렬합니다.
이것은 이전에 만든 다음 동영상을 기반으로 만든 이미지입니다. 이미지가 흐릿한 것은 동영상의 질이 나쁜 것일지도.
이런 이미지를 동영상 파일에서 생성하는 Python 코드를 썼습니다.
OpenCV를 사용하고 있습니다. OpenCV에 대해서는 어제도 기사로했습니다.
다음은 파이썬 코드입니다.
import cv2
def buildVideoCaptures(videoPath, outputPath):
cap = cv2.VideoCapture(videoPath)
if not cap.isOpened(): return
# 最初のフレームの画像を取得
_, first_img = cap.read()
# 動画のフレーム数を取得
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
# 連続サムネイルを作成
n = 9 # サムネイルの数
thumbnail_imgs = []
for i in range(n):
# フレームの番号を設定
cap.set(cv2.CAP_PROP_POS_FRAMES, (i+1) * frame_count / (n+1))
# 設定したフレーム番号の画像を取得
_, img = cap.read()
thumbnail_imgs.append(img)
# 9つのサムネイルを横に結合
thumbnails_img = cv2.hconcat(thumbnail_imgs)
# 画像サイズを取得
first_width = first_img.shape[1]
first_height = first_img.shape[0]
thumbnails_width = thumbnails_img.shape[1]
thumbnails_height = thumbnails_img.shape[0]
# 連続サムネイルのリサイズ後のサイズを決定
new_width = first_width
new_height = int(thumbnails_height * new_width / thumbnails_width)
# 連続サムネイルをリサイズ
thumbnails_img = cv2.resize(thumbnails_img, (new_width, new_height))
# 最初のフレーム画像と連続サムネイルを縦に結合
# 最初のフレーム画像の下に連続サムネイル
concat_img = cv2.vconcat([first_img, thumbnails_img])
# 画像ファイルで書き出す
cv2.imwrite(outputPath, concat_img)
buildVideoCaptures("./sample.mp4", "./thumbnail.jpg")
처음과 도중의 전부에서 10개의 프레임을 이미지로서 꺼내고, OpenCV의
resize
, hconcat
, vconcat
로 리사이즈나 결합하고 있을 뿐입니다.
Reference
이 문제에 관하여(동영상 파일에서 프레임을 나란히 썸네일 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suzuki-navi/items/8cef957e3938ffd1f79e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)