python은 Opencv를 이용하여 동영상을 저장하고 재생합니다
목표
동영상을 읽고 재생하며 저장하는 것을 배웁니다.
카메라에서 프레임을 포착하여 보여주는 것을 배웁니다.
공부VideoCapture(),cv2.VideoWriter() 사용
카메라에서 비디오 캡처
자체 카메라를 통해 영상을 포착하고 회색 영상으로 전환시켜 보여준다.
기본 단계는 다음과 같습니다.
1. 먼저 VideoCapture 객체를 생성합니다.
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의 숫자로 모든 숫자는 하나의 속성을 대표하고 대응 관계는 밑에 부록을 보십시오.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 객체를 생성합니다.
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()
부록Getting Started with Videos
저자: 천조바샤주
출처: https://www.cnblogs.com/summerday152/
이 문서는 Gitee: https://gitee.com/tqbx/JavaBlog
흥미가 있으면 본인의 개인 정거장을 참관할 수 있습니다: https://www.hyhwky.com
이상은python이opencv를 이용하여 영상을 저장하고 재생하는 상세한 내용입니다. 더 많은pythonopencv에 관한 자료는 저희 다른 관련 글에 주목하세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.