728x90
반응형
안녕하세요. 지난 포스팅의 Opencv 제대로 쓰기[2] 에서는 노트북 및 핸드폰 카메라로부터 영상을 불러오는 방법에 대해서 알아보았습니다. 오늘은 이 방법을 활용하여 불러온 외부 카메라 영상을 스크린샷을 저장하는 간단한 방법에 대해서 알아보겠습니다. 전체 코드는 아래의 깃허브 링크를 참조해주시길 바랍니다.
일단 여러분들 컴퓨터 키보드의 스크린샷을 저장하기 위해서 어떤 키를 보통 쓰시나요? 저는 보통 맥북이나 우분투 환경을 주로 쓰고 있는데, 우분투에서는 "PRINT SCREENSHOT"이라는 버튼이 insert 위에 바로 있구요. 맥북은 shift + command + 3을 동시에 누르면 됩니다. 즉, 어떤 키를 누르면 해당 화면의 한 프레임을 영상으로 저장하는 것인데요. 따라서 저희는 cv.imwrite() 함수를 이용해보도록 하겠습니다.
import os
import cv2
if not os.path.exists('result') :
os.makedirs('result')
cap = cv2.VideoCapture(0)
width = int(cap.get(3)) # 가로 길이 가져오기
height = int(cap.get(4)) # 세로 길이 가져오기
fps = 30
cnt = 1
fcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
out = cv2.VideoWriter('result/webcam.avi', fcc, fps, (width, height))
while (True) :
k = cv2.waitKey(1) & 0xFF
ret, frame = cap.read()
if ret :
out.write(frame)
cv2.imshow('frame', frame)
if k == ord('s') :
print("Screenshot saved...")
cv2.imwrite('result/screenshot{}.png'.format(cnt), frame, params=[cv2.IMWRITE_PNG_COMPRESSION,0])
cnt += 1
elif k == ord('q') : break
else :
print("Fail to read frame!")
break
cap.release()
out.release()
cv2.destroyAllWindows()
전체적인 기능은 지난 포스팅의 코드와 유사하지만 크게 다른 점은 "s" 키를 한번 누르면 한 장의 스크린샷이 저장된다는 점입니다.
728x90
반응형
'Programming > Python' 카테고리의 다른 글
Opencv 제대로 쓰기[5].영상 샤프닝 (0) | 2021.05.31 |
---|---|
Opencv 제대로 쓰기[4].흐림 처리 (0) | 2021.05.23 |
Opencv 제대로 쓰기[2]- 외부 카메라로부터 동영상 입력받기 (0) | 2021.04.25 |
Opencv 제대로 쓰기[1] - 컴퓨터 내 영상/동영상 입출력 (0) | 2021.04.17 |
Opencv 제대로 쓰기[0] - Opencv-python 설치 및 환경설정 (1) | 2021.04.11 |