복붙노트

[PYTHON] OpenCV + Python + Mac으로 비디오 쓰기

PYTHON

OpenCV + Python + Mac으로 비디오 쓰기

비디오에 프레임을 쓰려고 할 때 계속 어설 션 오류가 발생합니다. 내가 얻는 오류는 이것이다 :

Traceback (most recent call last):
  File "VideoMixer.py", line 23, in <module>
    cv.WriteFrame(writer, cv.LoadImage(fileName))
cv.error: dst.data == dst0.data

내 대본은 다음과 같습니다.

import cv
import sys

files = sys.argv[1:]

for f in files:
    capture = cv.CaptureFromFile(f)
    height = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH)
    width = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT)
    fps = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FPS)
    fourcc = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FOURCC)
    print fourcc
    writer = cv.CreateVideoWriter('ok.mov', int(fourcc),fps,(int(width),int(height)),1)
    print writer
    for i in range(30):
        frame = cv.QueryFrame(capture)
        print frame
        if frame:
            cv.WriteFrame(writer, frame)

프레임을 이미지로 저장하면 잘 작동하므로 캡처에 문제가 없음을 알 수 있습니다. 나는 작가를 잘못 만들고 있나? 'print fourcc'는 0.0을 출력하지만 많은 FOUR_CC 값으로 시도했습니다.

감사!

해결법

  1. ==============================

    1.프레임의 색상 공간이나 깊이가 다른가요? 몇 가지 관찰 :

    프레임의 색상 공간이나 깊이가 다른가요? 몇 가지 관찰 :

    개인적으로 OpenCV를 사용하여 Quicktime 비디오를 생성하지는 못했지만이 방법은 압축되지 않은 AVI 파일을 생성하는 데 효과적입니다. 나는 cv.CV_FOURCC 함수를 사용하여 I420 fourcc를 선택했다.

    import cv
    import sys
    
    # standard RGB png file
    path = 'stack.png'
    cap = cv.CaptureFromFile(path)
    fps = 24
    width = int(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_WIDTH))
    height = int(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_HEIGHT))
    # uncompressed YUV 4:2:0 chroma subsampled
    fourcc = cv.CV_FOURCC('I','4','2','0')
    writer = cv.CreateVideoWriter('out.avi', fourcc, fps, (width, height), 1)
    for i in range(90):
        cv.GrabFrame(cap)
        frame = cv.RetrieveFrame(cap)
        cv.WriteFrame(writer, frame)
    

    업데이트 : VLC 재생 screencapture.avi :

    퀵타임 :

  2. ==============================

    2.나는 'MJPG'와 'I420'을 포함하여 다양한 코덱을 시도했지만, 그들 중 누구도 내 Mac OpenCV 빌드에서 일하지 못했습니다. 그들은 불평없이 작은 볼 수없는 출력 파일을 만들었습니다.

    나는 'MJPG'와 'I420'을 포함하여 다양한 코덱을 시도했지만, 그들 중 누구도 내 Mac OpenCV 빌드에서 일하지 못했습니다. 그들은 불평없이 작은 볼 수없는 출력 파일을 만들었습니다.

    그런 다음이 페이지에서 나를 위해 작동하는 일부 코덱을 나열했습니다. 예 : 'mp4v'는 Mac에서 잘 작동하며 QuickTime에서 재생할 수 있습니다.

  3. ==============================

    3.OpenCV 소스의이 파일은 라인 # 2598에 포함됩니다 -이 어설 션이 실패하면 "dst.data == dst0.data"

    OpenCV 소스의이 파일은 라인 # 2598에 포함됩니다 -이 어설 션이 실패하면 "dst.data == dst0.data"

  4. from https://stackoverflow.com/questions/5426637/writing-video-with-opencv-python-mac by cc-by-sa and MIT license