openCV에서 gif 동영상을 반복하고 재생하는 방법
배경
현재 자작으로 사소한 OpenCV를 소개하는 웹 페이지를 작성하고 있습니다.
h tps : // 훗 아츠레 포인 ts. jp/오펜 cv_도 c/
에서 데이터 세트로 GIFMAGAZIN에서 GIF를 MP4로 변환하여 이미지 처리를하고 있습니다만, 그대로 cv2.imshow("window name", mat)
짧은 시간에 끝납니다.
여기서는 cv2.imshow()
를 사용하여 동영상 재생을 반복하는 방법을 작성해 보겠습니다.
gif to mp4
gif에서 mp4로 변환하는 방법이지만 두 가지가 있습니다. 하나는 gif를 브라우저에서 표시시키고 오른쪽 클릭으로 "다른 이름으로 동영상으로 저장"을 선택하여 변환하는 방법입니다. 또 다른 하나는 ffmpeg를 사용하여 변환하는 방법입니다. ( FFmpeg로 gif 애니메이션을 mp4로 변환 참조)
ffmpeg -i [gif ファイルパス] -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" [mp4 ファイルパス]
Method
반복 표시하는 방법은,
1. 한 번 동영상을 재생하고 모든 프레임을 배열에 저장
2. 무한 루프 안에 동영상 재생
3. 처리 중 종료 조건 설정
하면 됩니다.
개발
[ESC]로 동영상이 종료되지만 [S]를 누르면 프레임 이미지를 저장할 수 있습니다.
import numpy as np
import cv2
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--src')
args = parser.parse_args()
cap = cv2.VideoCapture(args.src)
fps = cap.get(cv2.CAP_PROP_FPS)
frames = []
#一度動画を再生して、フレームを配列に格納する
while cap.isOpened():
_ret, frame = cap.read()
if frame is None:
break
frames.append(frame)
cap.release()
end = False
while True:
if end:
break
for frame in frames:
cv2.imshow("loop a gif",frame)
k = cv2.waitKey(int(fps)) & 0xFF
# ESC で終了
if k == 27:
end = True
break
# S で画像保存
elif k == ord("s"):
cv2.imwrite("output.png", frame)
if __name__ == '__main__':
main()
Consequence
Afterword
동영상(이미지) 데이터는 센토 군을 멈춰라! GIF 게임 을 사용해 보았습니다. 타이밍 잘 S 버튼을 누르면 "nice"라고 표시된 이미지가 저장됩니다. 상당히 파악하기 어렵습니다.
손잡이 시간에 부탁드립니다
Reference
이 문제에 관하여(openCV에서 gif 동영상을 반복하고 재생하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/satsukiya/items/a0d9cd0015a62e4ee91f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
gif에서 mp4로 변환하는 방법이지만 두 가지가 있습니다. 하나는 gif를 브라우저에서 표시시키고 오른쪽 클릭으로 "다른 이름으로 동영상으로 저장"을 선택하여 변환하는 방법입니다. 또 다른 하나는 ffmpeg를 사용하여 변환하는 방법입니다. ( FFmpeg로 gif 애니메이션을 mp4로 변환 참조)
ffmpeg -i [gif ファイルパス] -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" [mp4 ファイルパス]
Method
반복 표시하는 방법은,
1. 한 번 동영상을 재생하고 모든 프레임을 배열에 저장
2. 무한 루프 안에 동영상 재생
3. 처리 중 종료 조건 설정
하면 됩니다.
개발
[ESC]로 동영상이 종료되지만 [S]를 누르면 프레임 이미지를 저장할 수 있습니다.
import numpy as np
import cv2
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--src')
args = parser.parse_args()
cap = cv2.VideoCapture(args.src)
fps = cap.get(cv2.CAP_PROP_FPS)
frames = []
#一度動画を再生して、フレームを配列に格納する
while cap.isOpened():
_ret, frame = cap.read()
if frame is None:
break
frames.append(frame)
cap.release()
end = False
while True:
if end:
break
for frame in frames:
cv2.imshow("loop a gif",frame)
k = cv2.waitKey(int(fps)) & 0xFF
# ESC で終了
if k == 27:
end = True
break
# S で画像保存
elif k == ord("s"):
cv2.imwrite("output.png", frame)
if __name__ == '__main__':
main()
Consequence
Afterword
동영상(이미지) 데이터는 센토 군을 멈춰라! GIF 게임 을 사용해 보았습니다. 타이밍 잘 S 버튼을 누르면 "nice"라고 표시된 이미지가 저장됩니다. 상당히 파악하기 어렵습니다.
손잡이 시간에 부탁드립니다
Reference
이 문제에 관하여(openCV에서 gif 동영상을 반복하고 재생하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/satsukiya/items/a0d9cd0015a62e4ee91f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[ESC]로 동영상이 종료되지만 [S]를 누르면 프레임 이미지를 저장할 수 있습니다.
import numpy as np
import cv2
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--src')
args = parser.parse_args()
cap = cv2.VideoCapture(args.src)
fps = cap.get(cv2.CAP_PROP_FPS)
frames = []
#一度動画を再生して、フレームを配列に格納する
while cap.isOpened():
_ret, frame = cap.read()
if frame is None:
break
frames.append(frame)
cap.release()
end = False
while True:
if end:
break
for frame in frames:
cv2.imshow("loop a gif",frame)
k = cv2.waitKey(int(fps)) & 0xFF
# ESC で終了
if k == 27:
end = True
break
# S で画像保存
elif k == ord("s"):
cv2.imwrite("output.png", frame)
if __name__ == '__main__':
main()
Consequence
Afterword
동영상(이미지) 데이터는 센토 군을 멈춰라! GIF 게임 을 사용해 보았습니다. 타이밍 잘 S 버튼을 누르면 "nice"라고 표시된 이미지가 저장됩니다. 상당히 파악하기 어렵습니다.
손잡이 시간에 부탁드립니다
Reference
이 문제에 관하여(openCV에서 gif 동영상을 반복하고 재생하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/satsukiya/items/a0d9cd0015a62e4ee91f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
동영상(이미지) 데이터는 센토 군을 멈춰라! GIF 게임 을 사용해 보았습니다. 타이밍 잘 S 버튼을 누르면 "nice"라고 표시된 이미지가 저장됩니다. 상당히 파악하기 어렵습니다.
손잡이 시간에 부탁드립니다
Reference
이 문제에 관하여(openCV에서 gif 동영상을 반복하고 재생하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satsukiya/items/a0d9cd0015a62e4ee91f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)