๐ก ๋ณธ ๋ฌธ์๋ '[Perception] Python OpenCV๋ฅผ ์ด์ฉํ ์์ ์ฌ์๊ณผ Frame Rate (FPS) ์กฐ์ '์ ๋ํด ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
์ฐ์๋ ์ด๋ฏธ์ง๋ ๋น๋์ค ํ์ผ์ ๋ค๋ฃฐ๋ ์ฌ์๋๋ ํ๋ ์์ ์๋๋ฅผ ์กฐ์ ํด์ผํ๋ Task๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ํนํ, ์ค์๊ฐ์ผ๋ก ์ด๋ฏธ์ง ํ๋ก์ธ์ฑ์ ํ๊ฒ ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ํ๋ ์์ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ฒ ๋๋ฉด ์ฐ์ฐ์ผ๋ก ์ธํด ์ฌ์์ด ์ง์ฐ๋๋ ์ํฉ์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ์ง์ฐ์๊ฐ ๋ฐ ์ฒ๋ฆฌ์๊ฐ์ ์ธก์ ํ๊ธฐ ์ํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ผ๋ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
1์ด ๋์ 10๊ฐ์ ํ๋ ์(์ด๋ฏธ์ง)์ด ์ฌ์๋๋ ์์์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๋จ์ผ ํ๋ ์ ์ฐ์ฐ์ด 1์ด๊ฐ ๊ฑธ๋ฆฌ๋ ๋ฅ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ฒ๋๋ฉด, ์์์ 1์ด์ด์ง๋ง 10์ด์ ์๊ฐ๋์ ์์์ด ์ฌ์๋๊ฒ ๋ฉ๋๋ค. ๋ฌผ๋ก ๋ชจ๋ ํ๋ ์์ ๋ํด ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฉ๋๋ฉด ์ข๊ฒ ์ง๋ง ์ค์๊ฐ์ด ์๊ตฌ๋๋ ์ํฉ์์๋ ์ง์ฐ์ด ๋ฐ์ํ๊ฒ ๋์ฃ . ์ด๋ฌํ ์ง์ฐ์ ๋ฐฉ์งํ๊ธฐ ์ํด time ํจ์๋ฅผ ์ด์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ๋๋ FPS๋ฅผ ์ง์ ํด๋ณด๊ฒ ์ต๋๋ค.
1. VideoCapture.py (๊ธฐ๋ณธ ์บก์ฒ ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ)
import cv2
import time
video = cv2.VideoCapture(0) # WebCam์ ๊ฒฝ์ฐ 0 ๋๋ 1
# ๋น๋์ค ํ์ผ์ ๊ฒฝ์ฐ '๊ฒฝ๋ก/ํ์ผ๋ช
.ํ์ฅ์'
while True:
ret, frame = video.read()
openCV๋ฅผ ํตํด ๋น๋์ค ๋ชจ๋์ ๋ถ๋ฌ์ต๋๋ค. ๋ ธํธ๋ถ์ ๊ฒฝ์ฐ 0 ๋๋ 1์ผ๋ก WebCam์ผ๋ก ํฌํธ๊ฐ ์ด๋ฆฌ๊ฒ ๋๋ฉฐ ํน์ ๋์์ ํ์ผ์ ๋ก๋ํ ๊ฒฝ์ฐ, ๊ฒฝ๋ก์ ํ์ผ๋ช ์ ' ' ์ ๋ฃ์ด ๋ถ๋ฌ์์ฃผ์๋ฉด ๋ฉ๋๋ค. ์ฐ์๋๋ ๋ชจ๋ ์์์ ๋ถ๋ฌ์ค๊ธฐ ์ํด while๋ฌธ์ผ๋ก ๋ฌดํ๋ฃจํ๋ฅผ ๋ง๋์ ํ, read() ํจ์๋ฅผ ํตํด ํ๋ ์์ ์ฝ์ด์ค๋๋ค.
- ret = ํ๋ ์ ์ฝ๊ธฐ์ ์ฑ๊ณตํ๋ฉด True ๊ฐ ๋ฐํ
- frame = ๋ฐฐ์ด ํ์์ ์์ ํ๋ ์ (๊ฐ๋ก X ์ธ๋ก X 3) ๊ฐ ๋ฐํ
2. VideoCapture.py (๋น๋์ค ์ฌ์)
while True:
ret, frame = video.read()
if ret in True :
cv2.imshow('Video',frame)
if cv2.waitKey(1) > 0:
break
ret๊ฐ ture ๊ฐ์ ๊ฐ์ง ๊ฒฝ์ฐ์๋ง ์์์ ์ถ๋ ฅํฉ๋๋ค. cv2.imshow() ํจ์๋ก ์์์ ์ง์ ํด์ฃผ๋ฉฐ waitKey()๋ ํค๋ณด๋ ์ ๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๋ ํจ์์ด์ง๋ง ์ฐ๋ฆฌ๋ ์์์ ์ฐ์์ ์ผ๋ก ์ฌ์ํ ๊ฒ์ด๊ธฐ์ ์ ๋ ฅ ๋๊ธฐ ์๊ฐ์ 1ms๋ก ์ง์ ํ์ฌ ์ ๋ ฅ ๊ด๊ณ์์ด 1ms ๋ง๋ค ์๋กญ๊ฒ ๊ฐฑ์ ํฉ๋๋ค.
3. VideoCapture.py (๋น๋์ค FPS ์ง์ )
prev_time = 0
FPS = 10
while True:
ret, frame = video.read()
current_time = time.time() - prev_time
if (ret is True) and (current_time > 1./ FPS) :
prev_time = time.time()
cv2.imshow('VideoCapture', frame)
if cv2.waitKey(1) > 0 :
break
์ง์ ๋ FPS๊ฐ๊ณผ prev_time์ 0์ผ๋ก ์ด๊ธฐํํฉ๋๋ค. ์ดํ, ํ์ฌ ์๊ฐ๊ณผ ์ด์ ํ๋ ์ ์ฌ์ ๋ฃจํ์์ ์ ์ฅ๋ ์๊ฐ ๊ฐ์ ๋น๊ตํ์ฌ ๊ฒฝ๊ณผ๋ ์๊ฐ๊ฐ์ ๋ฐ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก if๋ฌธ์์ ์ง์ ๋ FPS๊ฐ๊ณผ ๋น๊ตํ์ฌ FPS๊ฐ ์ด์์ ์๊ฐ์ด ๊ฒฝ๊ณผ ๋์์ ๋ ์๋ก์ด ํ๋ ์์ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค.
์ฐธ๊ณ
[Blog] OpenCV๋ฅผ ์ด์ฉํ ์์ ์ฌ์๊ณผ Frame Rate (FPS) ์กฐ์ : https://deep-eye.tistory.com/10