학습 자료
OpenCV를 활용한 고급 이미지 처리 기법
이번 수업에서는 OpenCV를 활용한 엣지(가장자리) 검출, 블러링, 객체 탐지 등의 고급 이미지 처리 기법을 다루겠습니다.
1. 엣지(Edge) 검출 - Canny Edge Detection
엣지 검출(Edge Detection)은 이미지에서 경계를 감지하는 기법입니다.
Canny Edge Detection은 가장 널리 사용되는 경계선 검출 알고리즘입니다.
Canny 엣지 검출 예시
import cv2 # 이미지 불러오기 image = cv2.imread("sample.jpg", cv2.IMREAD_GRAYSCALE) # Canny 엣지 검출 적용 edges = cv2.Canny(image, 100, 200) cv2.imshow("Canny Edges", edges) cv2.waitKey(0) cv2.destroyAllWindows()
2. 블러(Blur) 및 노이즈 제거
이미지에서 노이즈를 줄이거나 부드럽게(Blur) 처리할 때는 GaussianBlur()를 사용할 수 있습니다.
가우시안 블러 적용 예시
blurred = cv2.GaussianBlur(image, (5, 5), 0) cv2.imshow("Blurred Image", blurred) cv2.waitKey(0) cv2.destroyAllWindows()
여기서 (5, 5)는 커널 크기(kernel size)로, 값이 클수록 블러 효과가 강해집니다.
3. 윤곽선 검출(Contour Detection)
윤곽선(Contour)은 이미지에서 물체의 경계를 찾는 기법입니다.
OpenCV의 cv2.findContours()를 사용하여 이를 감지할 수 있습니다.
윤곽선 검출 예시
# 이미지 불러오기 및 변환 image = cv2.imread("sample.jpg") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 윤곽선 검출 contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 검출된 윤곽선 그리기 cv2.drawContours(image, contours, -1, (0, 255, 0), 2) cv2.imshow("Contours", image) cv2.waitKey(0) cv2.destroyAllWindows()
위 코드에서는 이진화(Thresholding) 후 cv2.findContours()를 사용하여 윤곽선을 감지하고, cv2.drawContours()를 통해 초록색으로 표시합니다.
4. 얼굴 및 객체 탐지 (Haar Cascade)
OpenCV는 미리 학습된 Haar Cascade Classifier를 이용하여 얼굴을 탐지할 수 있습니다.
얼굴 탐지 예시
# 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=5, minSize=(30, 30)) # 얼굴 위치에 사각형 그리기 for (x, y, w, h) in faces: cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)
위 코드는 얼굴을 감지하고, 사각형 박스를 그려 표시하는 예제입니다.
이번 수업에서는 엣지 검출, 블러링, 윤곽선 검출, 얼굴 탐지 등의 고급 OpenCV 기능을 배웠습니다.
다음 수업에서는 지금까지 배운 내용을 바탕으로 간단한 퀴즈를 풀어보겠습니다!
참고 자료
이 챕터의 강의 · AI를 위한 필수 파이썬 라이브러리
- 1. 수치 계산에 최적화된 파이썬 라이브러리, NumPy
- 2. Numpy 기본 연산 및 고급 기능
- 3. 선택형 퀴즈
- 4. 데이터 처리에 특화된 파이썬 라이브러리, Pandas
- 5. Pandas 기본 연산 및 고급 기능
- 6. 빈칸 채우기 퀴즈
- 7. Matplotlib로 데이터 시각화하기
- 8. 다양한 그래프와 응용 - Matplotlib 활용
- 9. 선택형 퀴즈
- 10. 시각화에 특화된 파이썬 라이브러리, Seaborn
- 11. Seaborn과 Matplotlib의 차이와 함께 사용하는 방법
- 12. 빈칸 채우기 퀴즈
- 13. 머신러닝을 쉽게 시작하는 라이브러리, Scikit-Learn
- 14. Scikit-Learn을 활용한 데이터 전처리 및 모델 평가
- 15. 선택형 퀴즈
- 16. 자연어 처리를 위한 파이썬 라이브러리, NLTK
- 17. NLTK를 활용한 고급 자연어 처리 기법
- 18. 빈칸 채우기 퀴즈
- 19. 컴퓨터 비전을 위한 파이썬 라이브러리, OpenCV
- 20. OpenCV를 활용한 고급 이미지 처리 기법
- 21. 선택형 퀴즈
Quiz
0 / 1
Canny 엣지 검출은 이미지에서 경계를 감지하기 위해 가장 널리 사용되는 알고리즘 중 하나이다.
○
✕
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말