OpenCV (파이썬 cv2 모듈) 관련 코드 목록을 기능별로 정리했습니다.
1. 기본 이미지 입출력 및 창 조작
| 기능 |
함수 |
설명 |
| 읽기 |
cv2.imread(filepath, flag) |
이미지 파일을 불러와 NumPy 배열로 반환 |
| 표시 |
cv2.imshow(winname, mat) |
이미지를 팝업 창에 표시 |
| 저장 |
cv2.imwrite(filepath, mat) |
NumPy 배열 형태의 이미지를 파일로 저장 |
| 대기 |
cv2.waitKey(delay) |
키 입력을 대기 (delay가 00이면 무한 대기) |
| 창 닫기 |
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 변환 행렬 MM을 적용 |
| 회전 행렬 계산 |
cv2.getRotationMatrix2D(center, angle, scale) |
회전 변환을 위한 행렬 계산 |
| 어파인 행렬 계산 |
cv2.getAffineTransform(src_points, dst_points) |
3쌍의 점을 이용하여 어파인 변환 행렬 계산 |
| 원근 행렬 계산 |
cv2.getPerspectiveTransform(src_points, dst_points) |
4쌍의 점을 이용하여 원근 변환 행렬 계산 |
| 원근 변환 적용 |
cv2.warpPerspective(src, M, dsize) |
원근 변환 행렬 MM을 적용 |
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) 실행 |