5

AVI 파일로 제공되는 비디오 교육 과정이 있습니다. 대부분의 화면은 마우스 포인터가 움직이는 슬라이드로 표시됩니다.파이썬을 사용하여 비디오에서 슬라이드를 추출하는 방법

나는 화면 변경하면 자동으로 슬라이드의 스크린 샷을 캡처하고 싶습니다 (때문에 마우스 포인터 이미지가 작은 금액을 변경하면 무시 주위에 이동.)

을 나는이 그래서 내가 할 수있는 작업을 수행 할 이미지를 단어 나 HTML 문서에 붙여 넣으면 화면에 찍히는 순간에 배우는 것처럼 메모를 추가 할 수 있지만 매우 느리고 지루한 편이며 과정은 매우 길다 (총 재생 시간은 약 24 시간).

저는 파이썬을 잘 알고 있지만 비디오 파일에서 스틸 파일을 추출하는 방법과 다른 파일을 스틸 파일에서 추출하는 방법에 대해 확신하지 못합니다. 어떤 파일을 유지할지, 어떤 파일을 삭제할지를 결정하는 방법이 다릅니다.

누구든지이 작업을 수행하는 방법을 제안 할 수 있습니까?

답변

10

ffmpeg과 같은 도구는 비디오에서 이미지를 추출하는 데 적합합니다. 수동에서 :

ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg 

이 이미지가 새로운 너비 x 높이 값에 맞게 다시 조절한다 등 비디오에서 초당 하나 개의 비디오 프레임과 foo-001.jpeg, foo-002.jpeg라는 이름의 파일 가 출력을 추출합니다.

차이점을 비교하려면 PIL 및/또는 OpenCV을 입력하면됩니다.

편집 : 난 그냥 그 장면의 급격한 변화가 일어날 때 발생하기 때문에 아마 만 key frames (내부 프레임)을 잡아에보다 효율적으로 될 것이라고 깨달았다. 빠른 구글 나중에 우리가 :

ffmpeg -i foo.avi -vsync 0 -vf select="eq(pict_type\,PICT_TYPE_I)" -s WxH -f image2 foo-%03d.jpeg 
+0

감사합니다. 두 번째 예제에서는 ffmpeg의 최신 버전을 사용해도 작동하지 못했습니다. 첫 번째 예제는 내가 필요한 것에 적합합니다. 덕분에 – zio

5

당신이 기본적으로 원하는 것은 장면 탐지입니다. framedifferenceanalyzer은 Python의 개념을 증명하는 교육용 프로그램으로, 문제 자체에 대해 배우기위한 좋은 출발점을 제공해야합니다.

자신을 구현하는 데있어 ffmpeg은 비디오를 일련의 프레임으로 변환하는 데 이상적인 도구입니다. 순수한 파이썬에서 그 부분을 시도하지는 않을 것입니다.

프레임 간의 차이를 계산하려면 ImageMagick (특히 compare 도구)을 사용할 수 있습니다. ImageMagick에는 Python 바인딩이 여러 개 있습니다 (예 : PythonMagick 또는 magickwand).

OpenCV을 사용하여 이미지 분석을 수행 할 수도 있습니다. OpenCV는 고성능의 고품질 컴퓨터 비전 알고리즘 라이브러리이며 아마도 이와 같은 일을 수행하는 가장 강력한 도구 중 하나 일 것입니다. 그러나 컴퓨터 비전/이미지 처리에 대해 어느 정도 알고 있고 이미 찾고있는 것을 잘 알고 있다고 가정합니다.

+0

. 비교 도구는 python으로 imagemagick과 함께 나를 위해 잘 작동합니다. – zio

관련 문제