1. OpenCV๋?
OpenCV(Open Source Computer Vision)๋ ์ค์๊ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ฐ ์ปดํจํฐ ๋น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ์ธํ ์์ ๊ฐ๋ฐํ๊ณ 2000๋ 6์์ ๋ฐํ๋์์ผ๋ฉฐ, ํ์ฌ๋ ์ธํ ์ด ์์ ๋ ์ํ๋ค. Python, C++, Java ๋ฑ์ ์ง์ํ๋ฉฐ, ๋ค์ํ ์ด์์ฒด์ (Windows, Linux, macOS)์์ ์คํ ๊ฐ๋ฅํ๋ค.
2. OpenCV์ ์ฃผ์ ๊ธฐ๋ฅ
OpenCV๋ ์ปดํจํฐ ๋น์ ๋ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํจ.
(1) ์ด๋ฏธ์ง ๋ฐ ๋์์ ์ฒ๋ฆฌ
- ์ด๋ฏธ์ง ์ฝ๊ธฐ, ์ ์ฅ, ๋ณํ
- ๋์์ ์ฌ์ ๋ฐ ํ๋ ์ ์ฒ๋ฆฌ
- ์๊ณต๊ฐ ๋ณํ (RGB ↔ Grayscale, HSV ๋ฑ)
(2) ํํฐ ๋ฐ ๋ณํ
- ๋ธ๋ฌ๋ง ๋ฐ ์คํ๋
- ์ฃ์ง ๊ฒ์ถ (Canny Edge Detection)
- ๊ธฐํํ์ ๋ณํ (ํ์ , ํฌ๊ธฐ ์กฐ์ , ์๊ณก ๋ณด์ )
(3) ๊ฐ์ฒด ํ์ง ๋ฐ ์ธ์
- ์ผ๊ตด, ๋, ์ฌ๋, ์๋์ฐจ ๋ฑ ํ์ง
- ๋ฅ๋ฌ๋ ๋ชจ๋ธ๊ณผ ์ฐ๊ณํ ๋ฌผ์ฒด ์ธ์
- ๋ฐฐ๊ฒฝ ์ ๊ฑฐ ๋ฐ ์ธ๊ทธ๋ฉํ ์ด์
(4) ํน์ง์ ๊ฒ์ถ ๋ฐ ๋งค์นญ
- SIFT, SURF, ORB ๋ฑ์ ์ด์ฉํ ์ด๋ฏธ์ง ํน์ง์ ๊ฒ์ถ
- ์ด๋ฏธ์ง ๊ฐ ์ ์ฌ๋ ๋น๊ต ๋ฐ ์ ๋ ฌ
(5) ๋จธ์ ๋ฌ๋ ๋ฐ ๋ฅ๋ฌ๋ ํตํฉ
- DNN ๋ชจ๋์ ํ์ฉํ์ฌ ๋ฅ๋ฌ๋ ๊ธฐ๋ฐ ๊ฐ์ฒด ํ์ง ์ํ
- TensorFlow, PyTorch ๋ชจ๋ธ๊ณผ ์ฐ๋ ๊ฐ๋ฅ
3. OpenCV ์ค์น
OpenCV๋ pip์ ์ด์ฉํด ์ฝ๊ฒ ์ค์นํ ์ ์์.
pip install opencv-python
๋๋ ์ถ๊ฐ์ ์ธ ํ์ฅ ๋ชจ๋์ด ํฌํจ๋ opencv-python-headless ์ค์น ๊ฐ๋ฅ.
pip install opencv-python-headless
(GUI ๊ธฐ๋ฅ ์์ด ์๋ฒ ํ๊ฒฝ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ opencv-python-headless ์ถ์ฒ)
4. OpenCV ๊ธฐ๋ณธ ์ฝ๋ ์์
(1) ์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ ๋ฐ ํ์
import cv2
# ์ด๋ฏธ์ง ์ฝ๊ธฐ
image = cv2.imread("sample.jpg")
# ์ด๋ฏธ์ง ํ์
# ์ด๋ฏธ์ง๊ฐ ๋ณ๋์ ์ฐฝ์ผ๋ก ๋ณด์ฌ์ง๊ณ
# ์๋ฌด ํค ์
๋ ฅ์ ์ข
๋ฃ๋จ
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
(2) ๊ทธ๋ ์ด์ค์ผ์ผ ๋ณํ
# ์ด๋ฏธ์ง gray scale
# ์๋ฌด ํค ์
๋ ฅ์ ์ข
๋ฃ
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Grayscale", gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
(3) ์ผ๊ตด ํ์ง (Haar Cascade ์ฌ์ฉ)
# ์๋ฌด ํค ์
๋ ฅ์ ์ข
๋ฃ
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=50, minSize=(300, 300))
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.imshow("Face Detection", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. OpenCV์ ํ์ฉ ๋ถ์ผ
- ์์จ์ฃผํ: ๊ฐ์ฒด ์ธ์, ์ฐจ์ ๊ฐ์ง, ์ฐจ๋ ๋ฒํธํ ์ธ์
- ์๋ฃ ์์ ์ฒ๋ฆฌ: CT/MRI ์์ ๋ถ์, ๋ณ๋ณ ํ์ง
- ๋ณด์ ๋ฐ ๊ฐ์: ์ผ๊ตด ์ธ์, ์ฌ๋ ํ์ง
- ์คํฌ์ธ ๋ถ์: ์ ์ ์์ง์ ์ถ์ , ๊ฒฝ๊ธฐ ๋ฐ์ดํฐ ๋ถ์
- AR(์ฆ๊ฐํ์ค) ๋ฐ VR: ์ค์๊ฐ ์์ ์ฒ๋ฆฌ ๊ธฐ๋ฐ ๊ทธ๋ํฝ ์ค๋ฒ๋ ์ด
6. ๊ฒฐ๋ก
OpenCV๋ ์ด๋ฏธ์ง ๋ฐ ์์ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๊ณ ์์. ํนํ ๋ฅ๋ฌ๋๊ณผ ๊ฒฐํฉํ์ฌ ๊ฐ์ฒด ํ์ง ๋ฐ ์ธ์์ด ๊ฐ๋ฅํ๋ฉฐ, Python์ ํฌํจํ ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ฌ์ฉํ ์ ์์ด ์ ์ฉํจ.
๋ค์ ๊ธ์์๋ OpenCV์์ ํ์ฉํ ์ ์๋ YuNet ๋ชจ๋ธ์ ์๊ฐํ ์์ ์.
'๊ฐ๋ฐ Code > ์ธ๊ณต์ง๋ฅ A.I.' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python][AI] OpenCV YuNet์ ํ์ฉํ ์ผ๊ตด ๋ชจ์์ดํฌ ์ฒ๋ฆฌ (0) | 2025.02.17 |
---|---|
[Python][AI] OpenCV YuNet์ ํ์ฉํ ์ผ๊ตด ํ์ง (0) | 2025.02.17 |
[Python][AI] ์ ํ vs ๋น์ ํ, ๋จ์กฐ vs ๋น๋จ์กฐ ๋ฐ์ดํฐ์ ์ ๋ฆฌ (1) | 2025.02.17 |
[Python][AI] AI ๋ชจ๋ธ ์ฑ๋ฅ ์งํ(Metrics) ์ ๋ฆฌ (1) | 2025.02.16 |
[AI][CatBoost] CatBoost๋ก Wine Quality ์์ธกํ๊ธฐ (0) | 2025.02.14 |