๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Computer Vision

Pycharm์—์„œ OpenCV๋ฅผ ํ™œ์šฉํ•œ ์–ผ๊ตด ์ธ์‹ ํ™˜๊ฒฝ ์„ธํŒ… ๋ฐ ์–ผ๊ตด ์ธ์‹ ํ…Œ์ŠคํŠธ

728x90
๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ๊ธ€์€ ๋™๊ณ„ ๊ณ„์ ˆํ•™๊ธฐ ๋•Œ ์ง„ํ–‰ํ–ˆ๋˜ ์–ผ๊ตด ์ธ์‹ ์ถœ์„๊ธฐ๋ก ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ •๋ฆฌ ๊ธ€์ž…๋‹ˆ๋‹ค.

๊ณ„์ ˆํ•™๊ธฐ๋‹ค ๋ณด๋‹ˆ ์งง์€ ๊ธฐ๊ฐ„ ์•ˆ์— ์ˆ˜ํ–‰ํ–ˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณผ๋ชฉ์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์†Œ๊ฐœํ•˜์ž๋ฉด ์›ํ•˜๋Š” ์ฃผ์ œ์— ๋Œ€ํ•œ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜๊ณ ,  ์ฐธ๊ณ ํ•œ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ฌธ์ œ์ ์— ๋Œ€ํ•œ ๊ฐœ์„ ์ ์„ ์ถ”๊ฐ€๋กœ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผ ํ–ˆ๋˜ ๊ณผ๋ชฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ตฌํ˜„ ์˜์ƒ๊ณผ ์†Œ์Šค์ฝ”๋“œ ๋งํฌ๋ฅผ ์ฒจ๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  ํ•ด์ฃผ์„ธ์š”!

 

 

https://www.youtube.com/watch?v=aBTPyji1nHA

๊ตฌํ˜„ ์˜์ƒ

 

 

 

https://github.com/KimGyoungTae/OpenCV-Face-recognition-Project

 

GitHub - KimGyoungTae/OpenCV-Face-recognition-Project

Contribute to KimGyoungTae/OpenCV-Face-recognition-Project development by creating an account on GitHub.

github.com

 

์–ผ๊ตด ์ธ์‹์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Object ๊ฒ€์ถœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ Haar cascades๋ฅผ ํ•˜๋‚˜์”ฉ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋‚˜๊ฐ”๋‹ค๋ฉด ์‹œ๊ฐ„์— ์ซ“๊ธฐ๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ OpenCV๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฏธ๋ฆฌ ํ•™์Šต๋œ Hear cascade๋ฅผ XML ํŒŒ์ผ๋กœ ์ œ๊ณตํ•˜์—ฌ ์†์‰ฝ๊ฒŒ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

OpenCV๋Š” Open Source Computer Vison์˜ ์•ฝ์ž๋กœ ์˜์ƒ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค. C๋‚˜ C++ ์–ธ์–ด์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Python์—์„œ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ง€์›ํ•˜๊ณ  ์žˆ์–ด Python์œผ๋กœ OpenCV๋ฅผ ํ™œ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŽ์ด ์ง„ํ–‰ํ•˜๊ณค ํ•ฉ๋‹ˆ๋‹ค.






์ปดํ“จํ„ฐ ๋น„์ „? / Computer Vison?

 

OpenCV๋ฅผ ์–ธ๊ธ‰ํ•จ์œผ๋กœ์จ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‹จ์–ด๋Š” ๋ฌด์—‡์ผ๊นŒ? ๋ฐ”๋กœ Computer Vison, ์ปดํ“จํ„ฐ ๋น„์ „์ด๋‹ค.

์ปดํ“จํ„ฐ ๋น„์ „์€ ์ด๋ฏธ์ง€์™€ ๋น„๋””์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•ด ์œ ์˜๋ฏธํ•œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋Š” ์ธ๊ณต์ง€๋Šฅ ๊ธฐ์ˆ ์ด๋‹ค. ์ฆ‰, ๊ธฐ๊ณ„์—๊ฒŒ ์ธ๊ฐ„์˜ ์‹œ๊ฐ์  ์ง€๋Šฅ์„ ๋ถ€์—ฌํ•˜์—ฌ ์ธ๊ฐ„์˜ ์‹œ๊ฐ์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž์œจ์ ์ธ ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

 

๋‹ค์‹œ ๋งํ•ด, ์šฐ๋ฆฌ๊ฐ€ ๋ˆˆ์œผ๋กœ ๋ณด๊ณ  ์ƒํ™ฉ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ ๊ฐ™์€ ์‹œ๊ฐ ๊ธฐ๋Šฅ์„ ์ปดํ“จํ„ฐ์—๊ฒŒ๋„ ๊ทธ ์‹œ๊ฐ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜์ƒ์ฒ˜๋ฆฌ์™€ ์ปดํ“จํ„ฐ ๋น„์ „์˜ ๊ด€๊ณ„

 

์˜์ƒ์ฒ˜๋ฆฌ : ์ปดํ“จํ„ฐ ๋น„์ „์—์„œ์˜ ์ „์ฒ˜๋ฆฌ ๊ณผ์ •, ์‚ฌ์ง„ ๋˜๋Š” ์˜์ƒ์„ ๋””์ง€ํ„ธํ™”์—ฌ  ์ •์ œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
์ปดํ“จํ„ฐ ๋น„์ „ : ์˜์ƒ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์˜์ƒ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํŠน์ง• ๋ฐ ์žฅ๋ฉด์„ ๋ถ„์„ํ•ด์„œ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๋„๋ก ๋งŒ๋“ค์–ด ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

 

 


 

 

 

์–ผ๊ตด ์ธ์‹์„ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ธํŒ… ๋ฐ Test ์ง„ํ–‰

 

์ง€๊ธˆ๊นŒ์ง€ OpenCV ์™€ ์ปดํ“จํ„ฐ ๋น„์ „์— ๊ด€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์•Œ์•„๋ณธ OpenCV๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์–ผ๊ตด ์ธ์‹์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €๋Š” OpenCV ํ™œ์šฉ์„ ์œ„ํ•ด Python์œผ๋กœ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๊ณ , ํŒŒ์ด์ฌ ์–ธ์–ด์— ํŠนํ™”๋œ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ธ PyCharm์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

File - Settings  ํด๋ฆญ!

 

Add Interpreter ํด๋ฆญํ•˜์—ฌ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”!

 

Interpreter ์ฆ‰, ์‹คํ–‰ํ™˜๊ฒฝ์„ ์ •์ƒ์ ์œผ๋กœ ์„ ํƒํ–ˆ๋‹ค๋ฉด ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ์•„์ด์ฝ˜์ด ๋œฐ ๊ฒƒ

Interpreter ์ฆ‰, ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ •์ƒ์ ์œผ๋กœ ์„ ํƒํ–ˆ๋‹ค๋ฉด ์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ์•„์ด์ฝ˜ ๋ชจ์–‘์œผ๋กœ ๋ฐ”๋€” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ Install ํ•ด์ค์‹œ๋‹ค.

 

 

ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ํ‘œ์‹œํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค. requests๋Š” ํ˜„์žฌ๋Š” ํ•„์š” ์—†์ง€๋งŒ, ๋‚˜์ค‘์— ์นด์นด์˜คํ†ก์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ ค๊ณ  ํ•  ๋•Œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.

 

 

์–ผ๊ตด ์ธ์‹ ๋‹จ๊ณ„

์œ„ ์ด๋ฏธ์ง€๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์šฐ๋ฆฌ์˜ ์–ผ๊ตด์„ ์ธ์‹ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ๋น„์ „์—์„œ ์–ผ๊ตด ์ธ์‹์€ ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปดํ“จํ„ฐ๊ฐ€ ์ด๋ฏธ์ง€์—์„œ ๊ฐ์ฒด๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ๊ณ ์œ  ํŒจํ„ด์„ ์ถ”์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•˜๊ฒŒ ๊ณผ์ •์„ ์ดํ•ดํ•˜๊ณ  ์‹ถ์œผ์‹œ๋ฉด ์•„๋ž˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด์‹œ๋ฉด ๋„์›€์ด ๋˜์‹ค ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

https://www.cubox.ai/board/blog/board_view.php?&page=1&num=121 

 

CUBOX

์„ธ๊ณ„ ์ตœ๊ณ  ์ˆ˜์ค€์˜ AI ์–ผ๊ตด์ธ์‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ Liveness๊ธฐ์ˆ ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ณตํ•ญ ์ž๋™ํ™” ํ”Œ๋žซํผ 'One-ID', ์›๊ฒฉ๊ทผ๋ฌด ์†”๋ฃจ์…˜ 'K-Face i Tracker', ๋Œ€์ค‘๊ตํ†ต ํ”Œ๋žซํผ 'Tag-less Gate', ๋น„๋Œ€๋ฉด ์ฃผ๋ฌธ ๊ฒฐ์ œ์‹œ์Šคํ…œ 'F&B P

www.cubox.ai

 

1
2
3
4
5
6
7
8
import cv2
import numpy as np
import face_recognition
 
imgElon = face_recognition.load_image_file('faces/Elon Musk.jpg'#์ธ์ฝ”๋”ฉ์— ์‚ฌ์šฉํ•  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
imgElon = cv2.cvtColor(imgElon,cv2.COLOR_BGR2RGB)  #RGB๋กœ ๋ณ€ํ™˜
imgTest = face_recognition.load_image_file('faces/Face_image.jpg')  #Test ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
imgTest = cv2.cvtColor(imgTest,cv2.COLOR_BGR2RGB) #Tset ์ด๋ฏธ์ง€ RGB๋กœ ๋ณ€ํ™˜
cs

ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•˜์…จ์œผ๋ฉด, ์ด์ œ ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•ด๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ์„ค์น˜ํ–ˆ๋˜ ํŒจํ‚ค์ง€๋“ค์„ import ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋น„๊ตํ•ด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€(imgElon)์™€ ๋น„๊ตํ•ด๋ณผ ์ด๋ฏธ์ง€(imgTest) ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์›น์บ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ฐ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ ์•ˆ์— ๋‘ ๊ฐœ ์ด๋ฏธ์ง€ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ค๊ณ , RGB๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

1
2
3
4
5
6
7
8
#์–ผ๊ตด์˜ ์œ„์น˜ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๊ธฐ
faceLoc = face_recognition.face_locations(imgElon)[0]
encodeElon = face_recognition.face_encodings(imgElon)[0]   #๊ฐ์ง€ํ•  ์–ผ๊ตด ์ธ์ฝ”๋”ฉ, ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ
cv2.rectangle(imgElon,(faceLoc[3],faceLoc[0]), (faceLoc[1],faceLoc[2]),(255,0,255),2#์šฐ๋ฆฌ๊ฐ€ ์–ผ๊ตด์„ ๊ฐ์ง€ํ•œ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ๊ฐํ˜•์„ ์ด๋ฏธ์ง€์— ๊ทธ๋ฆผ
 
faceLocTest = face_recognition.face_locations(imgTest)[0]
encodeTest = face_recognition.face_encodings(imgTest)[0]   #Test์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ
cv2.rectangle(imgTest,(faceLocTest[3],faceLocTest[0]), (faceLocTest[1],faceLocTest[2]),(255,0,255),2#Test ์ด๋ฏธ์ง€์— ์‚ฌ๊ฐํ˜• ์ด๋ฏธ์ง€
cs

๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ์›ํ™œํ•œ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์–ผ๊ตด์˜ ์œ„์น˜๋ฅผ ๊ต์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ธ์ฝ”๋”ฉ์€ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€ ํ•˜๋‚˜ํ•˜๋‚˜ ํ”ฝ์…€๊ฐ’์„ ๋ชจ๋‘ ์ฝ”๋“œ๋กœ ๋ฐ”๊ฟ”์„œ ๊ฐ’์„ ์–ป๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

 

1
2
3
4
5
6
7
8
9
10
11
results = face_recognition.compare_faces([encodeElon],encodeTest) #์ธ์ฝ”๋”ฉ ์ด๋ฏธ์ง€์™€ Test ์ด๋ฏธ์ง€ ๊ฐ„์˜ ๋น„๊ตํ•˜๊ธฐ
faceDis = face_recognition.face_distance([encodeElon],encodeTest) #์ด๋ฏธ์ง€ ์œ ์‚ฌ์„ฑ ์•Œ๊ธฐ, (==> ์–ผ๊ตด ๊ฐ„์˜ ์˜ค์ฐจ ๋Š๋‚Œ์ธ๊ฑฐ ๊ฐ™์Œ)
print(results, faceDis) #๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์„œ๋กœ ๊ฐ™์œผ๋ฉด True, ๋‹ค๋ฅธ ์ด๋ฏธ์ง€์ผ ๊ฒฝ์šฐ False๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค
 
 
#์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ž‘ ์œ ์‚ฌ์„ฑ์„ Test ์ด๋ฏธ์ง€์— ๋ช…์‹œํ•ด์ฃผ๊ธฐ, round()๋Š” ์œ ์‚ฌ์„ฑ์„ ์†Œ์ˆ˜์  ๋‘˜์งธ์งœ๋ฆฌ๋กœ ๋ฐ˜์˜ฌ๋ฆผ ํ•œ๋‹ค๋Š” ๋œป
cv2.putText(imgTest, f'{results} {round(faceDis[0], 2)}', (5050), cv2.FONT_HERSHEY_COMPLEX, 1, (00255), 2)
 
cv2.imshow('Elon Musk',imgElon) #์ธ์ฝ”๋”ฉ ์ด๋ฏธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
cv2.imshow('Face_image',imgTest) #Test ์ด๋ฏธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
cv2.waitKey(0)
cs

์ด์ œ ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ ์–ผ๊ตด ๊ฐ„์˜ ์˜ค์ฐจ๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ์˜ค์ฐจ๊ฐ€ ์ ์„์ˆ˜๋ก ์ปดํ“จํ„ฐ๋Š” ๋‘ ์–ผ๊ตด์„ ๋™์ผ์ธ์œผ๋กœ ํŒ๋‹จํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

True ์ผ ๋•Œ

๋นŒ๋“œ ์‹œ ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋น„๊ตํ•ด ๋™์ผ์ธ์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ True ๋ผ๋Š” ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

False ์ผ ๋•Œ

์žฌ ์–ผ๊ตด์„ Test ์ด๋ฏธ์ง€๋กœ ๋„ฃ์–ด๋ดค์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ Elon musk๋ž‘ ์ €๋Š” ๋™์ผ์ธ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— False๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์ด ์ž˜ ๋๋‹ค๋Š” ์ฆ๊ฑฐ๊ฒ ์ฃ ?

 

 


 

 

์ง€๊ธˆ๊นŒ์ง€ OpenCV๋ฅผ ํ™œ์šฉํ•ด์„œ Pycharm ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์–ผ๊ตด ์ธ์‹ Test๋ฅผ ์ง„ํ–‰ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋๊นŒ์ง€ ๋ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด์ƒ์ž…๋‹ˆ๋‹ค ~~ ^*^

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•