카메라로부터 영상 가져오기
파이썬 파일을 생성하여 다음 코드를 작성한다.
import cv2
#비디오의 개수만큼 객체 생성
cap = cv2.VideoCapture(0)
#카메라로부터 이미지 한장을 가져옴
ret, img_color = cap.read()
cv2.imshow("Color", img_color)
#아무키나 누르기 전까지 대기
cv2.waitKey(0)
#자원 메모리 해제
cap.release()
cv2.destroyAllWindows()
다음과 같이 한장의 캡쳐 파일이 나타난다.
동영상 처럼 보이게 하기 위해서는 화면에 보여지는 처리를 반복해주면 된다.
import cv2
#비디오의 개수만큼 객체 생성
cap = cv2.VideoCapture(0)
#esc키를 누르면 무한루프에서 빠져나옴
while(True):
ret, img_color = cap.read()
#캡쳐가 되지 않은 경우 다시 루프 처음부터 실행하도록
if ret == False:
continue
cv2.imshow("Color", img_color)
#키보드 입력을 받기 위해서 대기시간 1초 줌
if cv2.waitKey(1)&0xFF == 27:
break
#아무키나 누르기 전까지 대기
cv2.waitKey(0)
#자원 메모리 해제
cap.release()
cv2.destroyAllWindows()
카메라 영상 저장하기
프레임수는 일반적으로 30이며 영상이 1초에 30장의 이미지를 가져올 수 있다는 의미이다.
import cv2
#비디오의 개수만큼 객체 생성
cap = cv2.VideoCapture(0)
#코덱 지정
fourcc = cv2.VideoWriter_fourcc(* 'XVID')
#(저장될 동영상 파일 이름, 코덱, 영상의 초당 프레임수, 이미지 크기 캡쳐되는 이미지와 일치시키기)
writer = cv2.VideoWriter('output.avi', fourcc, 30.0, (640, 480))
#esc키를 누르면 무한루프에서 빠져나옴
while(True):
ret, img_color = cap.read()
#캡쳐가 되지 않은 경우 다시 루프 처음부터 실행하도록
if ret == False:
continue
cv2.imshow("Color", img_color)
#이미지를 반복해서 저장
writer.write(img_color)
#키보드 입력을 받기 위해서 대기시간 1초 줌
if cv2.waitKey(1)&0xFF == 27:
break
#아무키나 누르기 전까지 대기
cv2.waitKey(0)
#자원 메모리 해제
cap.release()
writer.release()
cv2.destroyAllWindows()
영상 실행 후 ESC키를 누르면 영상이 종료되고 다음과 같이 파일로 저장된다.
영상파일에서 오른쪽 클릭 후, Show in Explorer를 선택한다.
영상을 열면 재생됨을 확인할 수 있다.
동영상 파일 재생하기
재생할 영상을 불러온 후, 영상이 끝까지 재생되면 무한루프에서 빠져나오도록 조건문을 걸어준다.
import cv2
#재생할 동영상 파일
cap = cv2.VideoCapture('output.avi')
fourcc = cv2.VideoWriter_fourcc(* 'XVID')
while(True):
ret, img_color = cap.read()
#동영상을 끝까지 재생하면 무한루프에서 빠져나옴
if ret == False:
break
cv2.imshow("Color", img_color)
#키보드 입력을 받기 위해서 대기시간 1초 줌
if cv2.waitKey(1)&0xFF == 27:
break
#자원 메모리 해제
cap.release()
cv2.destroyAllWindows()
'안드로이드 > 안드로이드 with Java' 카테고리의 다른 글
안드로이드 스튜디오에 이미 생성된 외부 sqlite디비 불러오기(엑셀cvs파일) (0) | 2019.08.18 |
---|---|
[안드로이드 스튜디오/에러] failed to notify build listener 및 cause: org.jetbrains.plugins.... (0) | 2019.07.23 |
[안드로이드 스튜디오] Gradle version과 Android Plugin Version 확인하기 (0) | 2019.07.23 |
안드로이드 스튜디오에서 깃허브 연동해서 프로젝트 올리고 받기 (0) | 2019.07.23 |
안드로이드-서버-DB연동 개념: AsynkTask, HttpUrlConnection (0) | 2019.07.21 |