사용하지않는공간/openCV

[openCV] 동영상(캠) 다루기

반나무 2021. 5. 5. 15:40

videoCapture.py : 영상에서 한장을 캡쳐해서 화면에 보여줌 -> 사진찍기

import cv2

# videocapture객체를 생성
cap = cv2.VideoCapture(0)

# 카메라로부터 이미지 한장 가져옴
ret,img_color = cap.read()

# 캡처된 이미지를 화면에 보여줌
cv2.imshow("Color", img_color)

# 아무키나 누르기 전까지 대기
cv2.waitKey(0)

# 메모리해제
cap.release()
cv2.destroyAllWindows()

color_movie.py : 컬러 영상 찍기

import cv2

# videocapture객체를 생성
cap = cv2.VideoCapture(0)

# 영상은 이미지의 반복이다
while True :
    # 카메라로부터 이미지 한장 가져옴
    ret,img_color = cap.read()

    # 캡처가 되지않은경우 루프가 다시 처음부터 돌 수 있게 처리
    if ret == False:
        continue

    # 캡처된 이미지를 화면에 보여줌
    cv2.imshow("Color", img_color)

    # 아무키나 누르면 break
    if cv2.waitKey(1)&0xff == 27:
        break

# 메모리해제
cap.release()
cv2.destroyAllWindows()

gray_movie.py : 그레이 컬러 영상 찍기

import cv2

# videocapture객체를 생성
cap = cv2.VideoCapture(0)

# 영상은 이미지의 반복
while True :
    # 카메라로부터 이미지 한장 가져옴
    ret,img_color = cap.read()

    # 캡처가 되지않은경우 루프가 다시 처음부터 돌 수 있게 처리
    if ret == False:
        continue
    
    img_gray = cv2.cvtColor(img_color, cv2.COLOR_BGR2GRAY)
    
    # 컬러영상과 그레이영상을 보여준다.
    cv2.imshow("Color", img_color)
    cv2.imshow("Gray", img_gray)
    
    # 아무키나 누르면 종료
    if cv2.waitKey(1)&0xff == 27:
        break

# 메모리해제
cap.release()
cv2.destroyAllWindows()

open_movie.py : 영상파일 실행

import cv2

# videocapture객체를 생성 
# 재생할 파일명 입력
cap = cv2.VideoCapture('./movie/outout.avi')

# 영상은 이미지의 반복
while True :
    # 카메라로부터 이미지 한장 가져옴
    ret,img_color = cap.read()

    # 영상이 끝까지 돌면 종료
    if ret == False:
        break
    
    img_gray = cv2.cvtColor(img_color, cv2.COLOR_BGR2GRAY)
    
    # 캡처된 이미지를 화면에 보여줌
    cv2.imshow("Color", img_color)
    cv2.imshow("Gray", img_gray)
    
    # 아무키나 누르면 break
    if cv2.waitKey(1)&0xff == 27:
        break

# 메모리해제
cap.release()
cv2.destroyAllWindows()

save_movie.py : 영상파일 저장

import cv2
#print(cv2.__version__)

# videocapture객체를 생성
cap = cv2.VideoCapture(0)

fourcc = cv2.VideoWriter_fourcc(*'XVID') # 코덱 만들어줌

# VideoWrite(이름,코덱,프레임,사이즈)
writer = cv2.VideoWriter('outout.avi', fourcc, 30.0, (640,480))

# 영상은 이미지의 반복
while True :
    # 카메라로부터 이미지 한장 가져옴
    ret,img_color = cap.read()

    # 캡처가 되지않은경우 루프가 다시 처음부터 돌 수 있게 처리
    if ret == False:
        continue
    
    img_gray = cv2.cvtColor(img_color, cv2.COLOR_BGR2GRAY)
    
    # 캡처된 이미지를 화면에 보여줌
    cv2.imshow("Color", img_color)
    cv2.imshow("Gray", img_gray)

    # 사진을 영상으로 저장
    writer.write(img_color)

    # 아무키나 누르면 종료
    if cv2.waitKey(1)&0xff == 27:
        break

# 메모리해제
cap.release()
writer.release()
cv2.destroyAllWindows()
반응형