python은 Opencv를 이용하여 동영상을 저장하고 재생합니다

6606 단어 pythonopencv비디오
코드가 에 업로드됨: https://gitee.com/tqbx/python-opencv/tree/master/Getting_started_videos
목표
동영상을 읽고 재생하며 저장하는 것을 배웁니다.
카메라에서 프레임을 포착하여 보여주는 것을 배웁니다.
공부VideoCapture(),cv2.VideoWriter() 사용
카메라에서 비디오 캡처
자체 카메라를 통해 영상을 포착하고 회색 영상으로 전환시켜 보여준다.
기본 단계는 다음과 같습니다.
1. 먼저 VideoCapture 객체를 생성합니다.
  • 장치 인덱스, 카메라 번호 지정.
  • 비디오 파일의 이름입니다.
  • 2. 프레임별로 스냅합니다.
    3. 포획물을 방출한다.
    
    import numpy as np
    import cv2 as cv
    cap = cv.VideoCapture(0)
    if not cap.isOpened():
      print("Cannot open camera")
      exit()
    while True:
      # Capture frame-by-frame
      ret, frame = cap.read()
      # if frame is read correctly ret is True
      if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
      # Our operations on the frame come here
      gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
      # Display the resulting frame
      cv.imshow('frame', gray)
      if cv.waitKey(1) == ord('q'):
        break
    # When everything done, release the capture
    cap.release()
    cv.destroyAllWindows()
    기타:
  • cap.read()는 블로 값을 되돌려줍니다. 프레임이 정확하게 읽으면 True입니다. 이 값을 통해 영상이 끝났는지 판단할 수 있습니다.
  • 때때로 캡은 포획을 초기화하는 데 실패할 수 있습니다. cap.isOpened() 을 통해 포획이 초기화되었는지 확인할 수 있습니다. 만약에 True가 가장 좋고, 그렇지 않다면 cap.open() 을 사용하여 열어 보십시오.
  • 물론 당신은 cap.get(propId) 방식으로 영상의 일부 속성, 예를 들어 프레임의 너비, 프레임의 높이, 프레임 속도 등을 얻을 수 있습니다.propId는 0-18의 숫자로 모든 숫자는 하나의 속성을 대표하고 대응 관계는 밑에 부록을 보십시오.
  • 얻을 수 있는 만큼 프레임의 폭과 높이를 320과 240: cap.set(3,320), cap.set(4,240) 로 설정하는 것도 시도해 볼 수 있다.
  • 파일에서 비디오 재생
    코드는 카메라에서 영상을 포획하는 것과 기본적으로 같고, 다른 점은 VideoCapture에 전송되는 매개 변수, 이때 전송된 영상 파일의 이름이다.
    프레임 하나하나를 표시할 때 cv2.waitKey() 를 사용하여 적당한 시간을 설정할 수 있으며, 값이 작으면 동영상이 빨리 표시됩니다.정상적인 상황에서 25ms는 ok입니다.
    
    import numpy as np
    import cv2
    
    cap = cv2.VideoCapture('vtest.avi')
    
    while(cap.isOpened()):
      ret, frame = cap.read()
    
      gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
      cv2.imshow('frame',gray)
      if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    
    cap.release()
    cv2.destroyAllWindows()
    비디오 저장
    1. 다음과 같은 매개변수를 지정하는 VideoWriter 객체를 생성합니다.
  • 출력된 파일 이름, 예를 들어output.avi.
  • FourCC code.
  • 초당 프레임 수 fps.
  • 프레임의 크기입니다.
  • 2. FourCC 코드 전달에는 두 가지 방법이 있습니다.
  • fourcc = cv2.VideoWriter_fourcc(*'XVID')
  • fourcc = cv2.VideoWriter_fourcc('X','V','I','D')
  • 3. FourCC는 비디오 코딩기를 지정하는 데 사용되는 4바이트 코드입니다.
  • In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is more preferable. MJPG results in high size video. X264 gives very small size video)
  • In Windows: DIVX (More to be tested and added)
  • In OSX : (I don't have access to OSX. Can some one fill this?)
  • 
    import numpy as np
    import cv2
    
    cap = cv2.VideoCapture(0)
    
    # Define the codec and create VideoWriter object
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
    
    while(cap.isOpened()):
      ret, frame = cap.read()
      if ret==True:
        frame = cv2.flip(frame,0)
    
        # write the flipped frame
        out.write(frame)
    
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
          break
      else:
        break
    
    # Release everything if job is finished
    cap.release()
    out.release()
    cv2.destroyAllWindows()
    부록
  • CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds or video capture timestamp.
  • CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
  • CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
  • CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
  • CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
  • CV_CAP_PROP_FPS Frame rate.
  • CV_CAP_PROP_FOURCC 4-character code of codec.
  • CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
  • CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
  • CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
  • CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
  • CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
  • CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
  • CV_CAP_PROP_HUE Hue of the image (only for cameras).
  • CV_CAP_PROP_GAIN Gain of the image (only for cameras).
  • CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
  • CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
  • CV_CAP_PROP_WHITE_BALANCE_U The U value of the whitebalance setting (note: only supported by DC1394 v 2.x backend currently)
  • CV_CAP_PROP_WHITE_BALANCE_V The V value of the whitebalance setting (note: only supported by DC1394 v 2.x backend currently)
  • CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
  • CV_CAP_PROP_ISO_SPEED The ISO speed of the camera (note: only supported by DC1394 v 2.x backend currently)
  • CV_CAP_PROP_BUFFERSIZE Amount of frames stored in internal buffer memory (note: only supported by DC1394 v 2.x backend currently)
  • 참고 읽기
    Getting Started with Videos
    저자: 천조바샤주
    출처: https://www.cnblogs.com/summerday152/
    이 문서는 Gitee: https://gitee.com/tqbx/JavaBlog
    흥미가 있으면 본인의 개인 정거장을 참관할 수 있습니다: https://www.hyhwky.com
    이상은python이opencv를 이용하여 영상을 저장하고 재생하는 상세한 내용입니다. 더 많은pythonopencv에 관한 자료는 저희 다른 관련 글에 주목하세요!

    좋은 웹페이지 즐겨찾기