opencv_imgproc
는 OpenCV(Open Source Computer Vision Library)의 imgproc
모듈입니다. 이 모듈은 이미지 프로세싱과 관련된 다양한 함수와 알고리즘을 제공합니다. 주요 기능으로는 이미지 필터링, 변환, 이진화, 모서리 검출, 컬러 공간 변환 등이 있습니다.
목차
Toggle설명
이미지 처리, 컴퓨터 비전, 패턴 인식 등 다양한 영역에서 활용됩니다.opencv_imgproc
모듈에는 이미지의 히스토그램 분석, 모서리 강도 추정, 컨투어 검출 등 다양한 기능과 알고리즘이 있습니다.
opencv_imgproc
주요 기능
- 이미지 필터링(Filtering):
cv2.filter2D
: 2D 필터를 이용하여 이미지에 커널을 적용합니다. 주로 블러링, 샤프닝, 엣지 감지 등에 사용됩니다.cv2.blur
,cv2.boxFilter
: 주변 픽셀의 평균 값을 사용하여 이미지를 흐리게 만듭니다.cv2.GaussianBlur
: 가우시안 커널을 사용하여 이미지를 흐리게 만듭니다.cv2.medianBlur
: 중간값 필터를 사용하여 소금-후추 잡음을 제거합니다.
- 이미지 변환(Transformations):
cv2.resize
: 이미지의 크기를 조정합니다.cv2.warpAffine
,cv2.getAffineTransform
: 이미지를 회전, 이동, 크기 조정 등의 변환을 적용합니다.cv2.warpPerspective
,cv2.getPerspectiveTransform
: 원근 변환을 통해 이미지를 왜곡시킵니다.
- 이진화(Binarization):
cv2.threshold
: 이미지를 이진화합니다. 임계값을 기준으로 픽셀 값을 분류하여 픽셀 값을 0 또는 255로 설정합니다.
- 모서리 검출(Edge Detection):
cv2.Canny
: 이미지에서 모서리를 검출합니다. Canny 엣지 검출 알고리즘을 사용합니다.cv2.Sobel
,cv2.Laplacian
: 이미지에서 엣지를 검출하기 위해 소벨 또는 라플라시안 필터를 적용합니다.
- 컬러 공간 변환(Color Space Conversion):
cv2.cvtColor
: 이미지의 컬러 공간을 변환합니다. 주로 BGR과 RGB 간의 변환, 그레이스케일로의 변환 등에 사용됩니다.
- 이미지 히스토그램 분석(Histogram Analysis):
cv2.calcHist
: 이미지의 히스토그램을 계산합니다. 픽셀 강도 분포를 확인하고 이미지의 명암 대비를 개선하는 데 사용됩니다.cv2.equalizeHist
: 이미지의 히스토그램을 평활화하여 전체 명암 범위를 활용합니다.
- 컨투어 검출(Contour Detection):
cv2.findContours
: 이미지에서 객체의 외곽선을 검출합니다. 이진화된 이미지나 엣지 검출 결과에서 주로 사용됩니다.cv2.drawContours
: 찾은 컨투어를 이미지에 그립니다. 객체의 외곽선을 시각화하는 데 사용됩니다.
- 색공간 변환(Color Space Conversion):
cv2.cvtColor
: 이미지의 컬러 공간을 변환합니다. 주로 BGR과 RGB 간의 변환, 그레이스케일로의 변환 등에 사용됩니다.
- 텍스트 그리기(Drawing Text):
cv2.putText
: 이미지에 텍스트를 그립니다. 폰트, 크기, 색상 등을 지정하여 이미지에 텍스트를 추가할 수 있습니다.
- 형태 변환(Morphological Transformations):
cv2.erode
: 이미지에서 작은 객체를 제거하거나 객체 경계를 침식시킵니다.cv2.dilate
: 이미지에서 객체를 팽창시키거나 객체 경계를 확장시킵니다.cv2.morphologyEx
: 침식, 팽창, 열기, 닫기 등의 형태 변환 연산을 수행합니다.
- 허프 변환(Hough Transform):
cv2.HoughLines
: 선 형태의 객체를 검출합니다. 주로 엣지 이미지에서 직선을 검출하는 데 사용됩니다.cv2.HoughCircles
: 원 형태의 객체를 검출합니다. 주로 엣지 이미지에서 원을 검출하는 데 사용됩니다.
- 코너 검출(Corner Detection):
cv2.cornerHarris
: 이미지에서 코너(모서리)를 검출합니다. 코너는 이미지에서 구조적인 변화를 나타내는 중요한 지점입니다.
- 특징점 검출(Feature Point Detection):
cv2.goodFeaturesToTrack
: 이미지에서 관심 있는 특징점을 검출합니다. 주로 특징 기반 이미지 매칭 등에 사용됩니다.
- 컨투어 특징 추출(Contour Features Extraction):
cv2.moments
: 컨투어의 특징을 추출합니다. 객체의 면적, 중심, 경계 사각형 등을 계산할 수 있습니다.
- 이미지 분할(Image Segmentation):
cv2.watershed
: 이미지를 서로 다른 객체 또는 영역으로 분할합니다. 주로 이미지에서 객체를 분리하거나 영역을 식별하는 데 사용됩니다.
- 이미지 피라미드(Image Pyramids):
cv2.pyrUp
,cv2.pyrDown
: 이미지를 다운샘플링하거나 업샘플링하여 이미지 피라미드를 생성합니다. 다양한 해상도에서 이미지를 처리하고 분석하는 데 사용됩니다.
- 색공간 분할(Color Space Segmentation):
cv2.inRange
: 이미지에서 지정된 범위 내의 픽셀을 선택하여 이진 마스크를 생성합니다. 색공간에서 특정 색상을 분할하는 데 사용됩니다.
- 템플릿 매칭(Template Matching):
cv2.matchTemplate
: 작은 템플릿 이미지를 대상 이미지에서 검색하여 일치하는 영역을 찾습니다. 객체 검출이나 이미지 분석에 사용됩니다.
- 윤곽선 근사화(Approximation of Contours):
cv2.approxPolyDP
: 컨투어의 근사 윤곽선을 계산합니다. 곡선 형태의 컨투어를 직선 또는 다각형으로 근사화할 수 있습니다.
- 배경 제거(Background Subtraction):
cv2.createBackgroundSubtractorMOG2
: 비디오에서 움직이는 객체를 분리하기 위해 배경을 제거합니다. 움직이는 객체를 감지하고 추적하는 데 사용됩니다.
- 허프 변환을 기반으로한 직선 검출(Line Detection based on Hough Transform):
cv2.HoughLinesP
: 엣지 이미지에서 직선을 검출합니다.cv2.HoughLines
와 달리 선분 형태로 검출되어 좀 더 정확한 결과를 제공합니다.
- 다각형 그리기(Drawing Polygons):
cv2.polylines
: 이미지에 다각형을 그립니다. 다각형의 꼭짓점 좌표를 전달하여 다각형을 그릴 수 있습니다.
- 경계 사각형 그리기(Drawing Bounding Rectangles):
cv2.rectangle
: 이미지에 경계 사각형을 그립니다. 객체의 외곽선에 대한 경계 상자를 그릴 수 있습니다.
- 색 채우기(Filling Colors):
cv2.floodFill
: 이미지의 특정 점을 기준으로 주변 영역을 특정 색상으로 채웁니다. 주로 이미지 분할이나 객체 분리에 사용됩니다.
- 텍스트 영역 검출(Text Area Detection):
cv2.textarea
: 이미지에서 텍스트 영역을 검출합니다. OCR(광학 문자 인식) 등 텍스트 기반 작업에 유용합니다.
참고 사이트
- OpenCV Library의 전반적인 소개는 여기 링크를 참고하시기 바랍니다.
- OpenCV 튜토리얼은 아래 링크로 들어가시면 됩니다.
https://docs.opencv.org/4.x/d9/df8/tutorial_root.html
- OpenCV 공식 홈페이지는 아래 링크에 있습니다.
Opencv 책이 필요하신 분들은 아래 링크를 참고바랍니다.
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”