[OpenCV] 주요 함수 및 클래스 정리

OpenCV (파이썬 cv2 모듈) 관련 코드 목록을 기능별로 정리했습니다.

1. 기본 이미지 입출력 및 창 조작

 

기능 함수 설명
읽기 cv2.imread(filepath, flag) 이미지 파일을 불러와 NumPy 배열로 반환
표시 cv2.imshow(winname, mat) 이미지를 팝업 창에 표시
저장 cv2.imwrite(filepath, mat) NumPy 배열 형태의 이미지를 파일로 저장
대기 cv2.waitKey(delay) 키 입력을 대기 (delay가 0이면 무한 대기)
창 닫기 cv2.destroyAllWindows() 생성된 모든 이미지 창을 닫음
창 이름 설정 cv2.namedWindow() 창 이름 설정

2. 픽셀 및 색상 공간 조작

기능 함수 설명
색상 공간 변환 cv2.cvtColor() BGR  Gray, BGR  HSV 등으로 변환
채널 분리 cv2.split() 컬러 이미지를 개별 2차원 배열(채널)로 분리
채널 재결합 cv2.merge() 분리된 채널들을 3차원 컬러 이미지로 합침
색상 마스크 생성 cv2.inRange() 특정 색상 범위에 해당하는 이진 마스크 생성 (주로 HSV 공간)

3. 산술 및 비트 연산

기능 함수 설명
덧셈 연산 cv2.add() 두 이미지 또는 이미지와 상수를 더함
뺄셈 연산 cv2.subtract() 두 이미지 또는 이미지와 상수를 뺌
논리곱 연산 cv2.bitwise_and() 원본 이미지와 마스크를 AND 연산하여 마스킹

4. 도형 그리기 및 텍스트 출력

기능 함수 주요 매개 변수
cv2.line() (시작 좌표, 끝 좌표, 색상, 두께)
사각형 cv2.rectangle() (좌상단 좌표, 우하단 좌표, 색상, 두께)
cv2.circle() (중심 좌표, 반지름, 색상, 두께)
타원 cv2.ellipse() (중심 좌표, 장축/단축 길이, 회전 각도, 색상, 두께)
다각형 (선) cv2.polylines() (꼭짓점 배열, 닫힘 여부, 색상, 두께)
다각형 (채움) cv2.fillPoly() (꼭짓점 배열, 색상)
텍스트 출력 cv2.putText() (이미지, 텍스트, 시작 좌표, 폰트 종류, 폰트 크기, 색상, 두께)
폰트 상수 cv2.FONT_HERSHEY_SIMPLEX, cv2.FONT_HERSHEY_DUPLEX, cv2.FONT_HERSHEY_COMPLEX, cv2.FONT_ITALIC  

5. 이벤트 처리

기능 함수 설명
마우스 콜백 등록 cv2.setMouseCallback('창 이름', 콜백_함수) 이미지 창의 마우스 이벤트를 감지하여 콜백 함수 호출
주요 이벤트 상수 cv2.EVENT_LBUTTONDOWN, cv2.EVENT_MOUSEMOVE  마우스 동작의 종류를 정의

6. 임계 처리 (Thresholding)

기능 함수 설명
단순 임계 처리 cv2.threshold(src, thresh, maxval, type) 하나의 기준값을 사용하여 이진 이미지 생성
임계 처리 유형 cv2.THRESH_BINARY, cv2.THRESH_BINARY_INV  
적응형 임계 처리 cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C) 이미지 영역별로 다른 기준값을 적용
히스토그램 평활화 cv2.equalizeHist(src) 흑백 이미지의 대비를 개선

7. 기하학적 변환

기능 함수 용도
크기 변경 cv2.resize(src, dsize, fx, fy, interpolation) 이미지 크기 확대/축소
어파인 변환 적용 cv2.warpAffine(src, M, dsize) 이동, 회전 등 2x3 변환 행렬 M을 적용
회전 행렬 계산 cv2.getRotationMatrix2D(center, angle, scale) 회전 변환을 위한 행렬 계산
어파인 행렬 계산 cv2.getAffineTransform(src_points, dst_points) 3쌍의 점을 이용하여 어파인 변환 행렬 계산
원근 행렬 계산 cv2.getPerspectiveTransform(src_points, dst_points) 4쌍의 점을 이용하여 원근 변환 행렬 계산
원근 변환 적용 cv2.warpPerspective(src, M, dsize) 원근 변환 행렬 M을 적용

8. 필터링 및 모폴로지 연산

기능 함수 설명
평균 필터 cv2.blur(src, ksize) 단순 평균 블러링
가우시안 필터 cv2.GaussianBlur(src, ksize, sigmaX) 가중치를 적용한 블러링
미디언 필터 cv2.medianBlur(src, ksize) 중앙값을 이용한 노이즈 제거 (소금-후추 노이즈에 탁월)
사용자 커널 적용 cv2.filter2D(src, ddepth, kernel) 사용자 정의 커널 적용
구조 요소 생성 cv2.getStructuringElement() 모폴로지 연산에 사용할 커널 생성
침식 cv2.erode(src, kernel, iterations) 객체의 크기를 수축
팽창 cv2.dilate(src, kernel, iterations) 객체의 크기를 확장
복합 연산 cv2.morphologyEx(src, op, kernel) 열림 (cv2.MORPH_OPEN), 닫힘 (cv2.MORPH_CLOSE), 경계 찾기 (cv2.MORPH_GRADIENT) 등 수행

9. 경계선 및 특징점 검출

기능 함수 설명
Canny 엣지 검출 cv2.Canny(image, threshold1, threshold2) Canny 알고리즘을 이용한 경계선 검출
윤곽선 검출 cv2.findContours(image, mode, method) 이미지에서 객체의 닫힌 윤곽선 목록 추출
윤곽선 그리기 cv2.drawContours(image, contours, contourIdx, color, thickness) 이미지에 윤곽선 그리기
히스토그램 계산 cv2.calcHist() 이미지의 픽셀 값 분포 계산
Harris 코너 검출 cv2.cornerHarris(src, blockSize, ksize, k) Harris 알고리즘을 사용한 코너 검출
ORB 생성 cv2.ORB_create() ORB 특징점 알고리즘 객체 생성

10. 비디오 처리 및 객체 검출/인식

기능 함수 설명
비디오 캡처 객체 cv2.VideoCapture() 카메라 또는 비디오 파일을 열기 위한 객체 생성
프레임 읽기 cv2.VideoCapture.read() 비디오 소스에서 프레임 읽기 (ret, frame 반환)
소스 해제 cv2.VideoCapture.release() 비디오 캡처 객체 해제
비디오 파일 생성 cv2.VideoWriter() 처리된 프레임을 비디오 파일로 저장하기 위한 객체 생성
프레임 쓰기 cv2.VideoWriter.write(frame) 현재 프레임을 비디오 파일에 기록
배경 차분 모델 생성 cv2.createBackgroundSubtractorMOG2() 가우시안 혼합 모델(MOG2) 기반 배경 모델 생성
배경 차분 적용 cv2.BackgroundSubtractorMOG2.apply(frame) 현재 프레임에서 배경을 제거하여 마스크 반환
Haar 분류기 로드 cv2.CascadeClassifier() 학습된 Haar 캐스케이드 XML 파일 로드
객체 검출 cv2.CascadeClassifier.detectMultiScale() 이미지에서 객체를 검출하고 바운딩 박스 반환
DNN 모델 로드 cv2.dnn.readNet() 딥러닝 모델 (TensorFlow, Caffe 등) 로드
이미지 전처리 cv2.dnn.blobFromImage() 이미지를 DNN 모델 입력에 맞게 전처리
순전파 실행 net.forward() 로드된 모델을 통해 추론(Inference) 실행