๐Ÿง  AI/๐Ÿ‘“ Computer Vision

์›น ์บ  ์—ฐ๊ฒฐ

์˜ค๋ธŒ ๐Ÿง™‍โ™‚๏ธ 2024. 1. 7. 18:07

[1] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค์ž.

import cv2 as cv
import sys

 

[2] ์นด๋ฉ”๋ผ์™€ ์—ฐ๊ฒฐํ•˜์ž.

1. ์›น์บ ๊ณผ ์—ฐ๊ฒฐ ์‹œ๋„ํ•˜๊ณ  vv ๊ฐ์ฒด์— ์ €์žฅํ•œ๋‹ค.

2. ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜ ์›น ์บ  ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์›น์บ ์ด ํ•˜๋‚˜๋ฉด 0์œผ๋กœ ์ง€์ •ํ•˜์ž.
3. cv.CAP_DSHOW ๋Š” ๋น„๋””์˜ค๊ฐ€ ํ™”๋ฉด์— ๋ฐ”๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•œ๋‹ค.

vv = cv.VideoCapture(0,cv.CAP_DSHOW)

์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด ์นด๋ฉ”๋ผ๋Š” ์ผœ์ง€๋‚˜, ํ™”๋ฉด์— ํ™•์ธ์€ ์•ˆ๋œ๋‹ค.

 

[3] ์›น์บ ๊ณผ ์—ฐ๊ฒฐ์ด ์‹คํŒจํ•˜๋ฉด, cap ๊ฐ์ฒด์˜ isOpened ํ•จ์ˆ˜๊ฐ€ false ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

=> ์‹คํŒจํ•˜๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

if not vv.isOpened():
    sys.exit("์นด๋ฉ”๋ผ ์—ฐ๊ฒฐ ์‹คํŒจ")

 

[4] ๋™์˜์ƒ์„ ์ž…๋ ฅํ•˜๋Š” ํ–‰์„ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•œ๋‹ค.

[5] vv๊ฐ์ฒด์˜ ํ”„๋ ˆ์ž„ํš๋“ ์„ฑ๊ณต ์—ฌ๋ถ€์™€ ํ”„๋ ˆ์ž„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” readํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

ret์— ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ / frame์— ํ”„๋ ˆ์ž„์„ ์ €์žฅํ•œ๋‹ค.

[6] ํ”„๋ ˆ์ž„ ํš๋“์— ์‹คํŒจํ•˜๋ฉด ๋ฃจํ”„๋ฅผ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค. 

[7] video display์ด๋ฆ„์˜ ์ฐฝ์— ํš๋“ํ•œ ์˜์ƒ์„ ๋ณด์—ฌ์ฃผ๋„๋ก ํ•œ๋‹ค.

[8] 1๋ฐ€๋ฆฌ์ดˆ๋™์•ˆ ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

[9] ํ‚ค๋ณด๋“œ q๊ฐ’์ด ๋“ค์–ด์˜ค๋ฉด ๋ฃจํ”„๋ฅผ ๋น ์ ธ๋‚˜๊ฐ„๋‹ค. 

[10] ์นด๋ฉ”๋ผ์™€ ์—ฐ๊ฒฐ์„ ๋Š๋Š”๋‹ค.  

while True:
    ret,frame = vv.read() 
    
    if not ret:
        print('ํ”„๋ ˆ์ž„ ํš๋“์— ์‹คํŒจํ•˜์—ฌ ๋ฃจํ”„๋ฅผ ๋น ์ ธ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.')
        break
        
    cv.imshow('Video Display',frame)
    
    key = cv.waitKey(1)
    if key == ord('q'): 
        break
        
vv.release() 
cv.destroyAllWindows()