250x250
Link
๋‚˜์˜ GitHub Contribution ๊ทธ๋ž˜ํ”„
Loading data ...
Notice
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Data Science LAB

[Python] OpenCV ๊ธฐ์ดˆ 1 - ์ด๋ฏธ์ง€, ๋™์˜์ƒ ์ถœ๋ ฅ ๋ณธ๋ฌธ

๐Ÿ–ฅ๏ธ Computer Vision/Opencv

[Python] OpenCV ๊ธฐ์ดˆ 1 - ์ด๋ฏธ์ง€, ๋™์˜์ƒ ์ถœ๋ ฅ

ใ…… ใ…œ ใ…” ใ…‡ 2022. 8. 1. 23:29
728x90

์œ ํŠœ๋ธŒ์—์„œ OpenCV ๊ด€๋ จ ์œ ์šฉํ•œ ์˜์ƒ์„ ์ฐพ์•„์„œ ์•ž์œผ๋กœ ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. 

์ฝ”๋“œ๋„ ๊ฐ„๊ฒฐํ•˜๊ณ  ์„ค๋ช…๋„ ์‰ฝ๊ฒŒ ์ž˜ํ•ด์ฃผ์…”์„œ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค. (เธ‡ •_•)เธ‡

 

์œ ํŠœ๋ธŒ ์ถœ์ฒ˜ : https://www.youtube.com/watch?v=XK3eU9egll8&feature=share 

 

 

1. ์ด๋ฏธ์ง€ ์ถœ๋ ฅ 

์‚ฌ์šฉํ•œ ์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://pixabay.com/ko/photos/%ea%b3%a0%ec%96%91%ec%9d%b4-%ec%a0%8a%ec%9d%80-%eb%8f%99%eb%ac%bc-%ec%a3%bc%eb%b0%a9-2083492/

import cv2
img = cv2.imread('img.jpg') #ํ•ด๋‹น๊ฒฝ๋กœ์˜ ํŒŒ์ผ ์ฝ์–ด์˜ค๊ธฐ
cv2.imshow('img',img) #img ์ด๋ฆ„์˜ ์ฐฝ์— img ํ‘œ์‹œ
cv2.waitKey(0) # ์ง€์ •๋œ ์‹œ๊ฐ„๋™์•ˆ ์‚ฌ์šฉ์ž ํ‚ค ์ž…๋ ฅ ๋Œ€๊ธฐ
cv2.destroyAllWindows() #๋ชจ๋“  ์ฐฝ ๋‹ซ๊ธฐ

 

์ด๋Ÿฐ์‹์œผ๋กœ ์œˆ๋„์šฐ์ฐฝ์ด ํ™œ์„ฑํ™” ๋˜๋ฉด์„œ ์ €์žฅ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

cv2.waitKey(0)๋กœ ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค๋ณด๋“œ์˜ ์•„๋ฌด ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ธฐ ์ „๊นŒ์ง€๋Š” ํ™”๋ฉด์ด ๊ณ„์† ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค. 

 

- ์ด๋ฏธ์ง€ ์ฝ๊ธฐ ์˜ต์…˜

1. cv2.IMREAD_COLOR : ์ปฌ๋Ÿฌ ์ด๋ฏธ์ง€, ํˆฌ๋ช… ์˜์—ญ์€ ๋ฌด์‹œ(๊ธฐ๋ณธ๊ฐ’)
2. cv2.IMREAD_GRAYSCALE : ํ‘๋ฐฑ ์ด๋ฏธ์ง€
3. cv2.IMREAD_UNCHANGED : ํˆฌ๋ช… ์˜์—ญ ํฌํ•จ
img_color = cv2.imread('img.jpg',cv2.IMREAD_COLOR)
img_gray = cv2.imread('img.jpg',cv2.IMREAD_GRAYSCALE)
img_unchanged = cv2.imread('img.jpg',cv2.IMREAD_UNCHANGED)

cv2.imshow('img_color',img_color)
cv2.imshow('img_gray',img_gray)
cv2.imshow('img_unchanged',img_unchanged)


cv2.waitKey(0)
cv2.destroyAllWindows()

 

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์œˆ๋„์šฐ์ฐฝ 3๊ฐœ๊ฐ€ ๋™์‹œ์— ๋œฌ๋‹ค. 

 

- Shape

img = cv2.imread('img.jpg')

img.shape #์„ธ๋กœ, ๊ฐ€๋กœ, Channel(RGB)

img.shapeํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ๊ธธ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Opencv์—์„œ๋Š” RGB ๊ฐ’์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค.

 

 

 

2. ๋™์˜์ƒ ์ถœ๋ ฅ

๋™์˜์ƒ ์ถœ์ฒ˜ : https://www.pexels.com/ko-kr/video/7515833/

import cv2
cap = cv2.VideoCapture('video.mp4') 

while cap.isOpened(): # ๋™์˜์ƒ ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋กœ ์—ด๋ ธ๋Š”์ง€?
    ret, frame = cap.read() #ret : ์„ฑ๊ณต ์—ฌ๋ถ€, frame : ๋ฐ›์•„์˜จ ์ด๋ฏธ์ง€(ํ”„๋ ˆ์ž„)
    if not ret: 
        print('๋”์ด์ƒ ๊ฐ€์ ธ์˜ฌ ํ”„๋ ˆ์ž„ ์—†์Œ')
        break
    
    cv2.imshow('video',frame)
    
    if cv2.waitKey(1) == ord('q'):
        print('์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์˜ํ•ด ์ข…๋ฃŒ')
        break
    
cap.release() #์ž์› ํ•ด์ œ
cv2.destroyAllWindows() # ๋ชจ๋“  ์ฐฝ ๋‹ซ๊ธฐ

 

๋™์˜์ƒ ์ถœ๋ ฅ์€ ์บก์ณ๋ณธ์„ ์ด์–ด์„œ ์žฌ์ƒ์‹œํ‚จ๋‹ค๊ณ  ์ดํ•ด

'q' ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋™์˜์ƒ ์žฌ์ƒ์ด ์™„๋ฃŒ๋˜๋ฉด ๋น„๋””์˜ค ์žฌ์ƒ์ด ๋๋‚˜๋ฉฐ, ์œˆ๋„์šฐ์ฐฝ์ด ๋‹ซํž˜

waitKey(1)๋กœ ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋””์˜ค ์žฌ์ƒ ์†๋„๊ฐ€ ์ข€ ๋น ๋ฅด๋‹ค. 

 

 

 

3. ์นด๋ฉ”๋ผ ์ถœ๋ ฅ

cap = cv2.VideoCapture(0) # 0๋ฒˆ์งธ ์นด๋ฉ”๋ผ ์žฅ์น˜(Device ID)

if not cap.isOpened(): #์นด๋ฉ”๋ผ๊ฐ€ ์ž˜ ์—ด๋ฆฌ์ง€ ์•Š์œผ๋ฉด
    exit() # ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
    
while True:
    ret, frame = cap.read()
    if not ret : 
        break
    
    cv2.imshow('camera',frame)
    
    if cv2.waitKey(1) == ord('q'): #์‚ฌ์šฉ์ž๊ฐ€ q ์ž…๋ ฅํ•˜๋ฉด ์ข…๋ฃŒ
        break
cap.release()
cv2.destroyAllWindows()

 

๋…ธํŠธ๋ถ์— ์นด๋ฉ”๋ผ๊ฐ€ 1๋Œ€ ๋‹ฌ๋ ค ์žˆ๊ธฐ ๋•Œ๋ฌธ์— cv2.VideoCapture(0)์œผ๋กœ ์„ค์ •!

๊ธฐ๊ธฐ์— ์นด๋ฉ”๋ผ๊ฐ€ 2๋Œ€ ์ด์ƒ ๋‹ฌ๋ ค์žˆ์œผ๋ฉด 0,1,2 .. ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 'q' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์นด๋ฉ”๋ผ ์ข…๋ฃŒ

728x90
Comments