Programming/OpenCV

함수 정리

오숭이 2021. 12. 26. 16:10

VideoCapture()

카메라 또는 동영상 파일로부터 정지 영상 프레임을 받아올 수 있음

동영상 파일을 불러오기 위해서 VideoCapture 객체를 생성

 

VideoWriter

동영상 파일을 생성하고 프레임을 저장

 

line()

영상위에 직선 그리기

 

arrowedLine()

화살표 형태의 직선 그리기

 

drawMarker()

마커(marker) 그리기

 

rectangle()

사각형 그리기

대각 위치에 있는 두 꼭지점 좌표를 이용

 

circle()

원 그리기

원의 중심점 좌표와 반지름을 지정

 

polylines()

임의의 다각형 그리기

다각형의 꼭지점 좌표를 전달

 

putText()

문자열 출력

 

waitKey(delay)

키 입력을 확인하기 위해 사용한 함수

delay는 키 입력을 기다릴 시간

 

setMouseCallback

특정 창에 마우스 콜백 함수 등록

 

createTrackbar()

트랙바 생성

 

getTrackbarPos()

트랙바의 현재 위치를 알고 싶을 경우

 

setTrackbarPos()

트랙바의 위치를 강제로 특정 위치로 옮기고 싶을 경우

 

minMaxLoc() 

주어진 행렬의 최솟값, 최댓값을 찾는 함수

해당 값이 있는 좌표 정보도 함께 알아낼 수 있음

 

mean()

평균 구하기

 

normalize()

행렬의 norm값을 정규화 하거나 원소 값 범위를 특정 범위로 정규화

 

cvtColor()

BGR 순서로 컬러 정보를 저장

전달하는 인자는 차례대로 입력 영상, 출력 영상, 컬러 변환 코드

 

calcHist()

영상의 히스토그램 구하기

한 장의 영상뿐만 아니라 여러 장의 영상으로부터 히스토그램 도출 가능

 

calcGrayHist()

calcHist()를 이용하여 그레이스케일 영상의 히스토그램을 표현하는 행렬 hist를 구하여 반환

 

equalizeHist()

그레이스케일 영상의 히스토그램 평활화를 수행

3채널로 구성된 컬러 영상을 equalizeHist() 함수 입력으로 전달하면 에러 발생

 

add()

영상의 덧셈을 수행

두 개의 행렬 또는 영상을 입력으로 받고, 하나의 행렬 또는 영상을 출력으로 생성

src1과 src2가 모두 영상인 경우 일반적인 행렬의 덧셈 연산

src1이 영상/행렬이고 src2는 정수, 실수라면 src1 행렬의 모든 픽셀 값에 src2 값을 더하여 결과 영상을 생성

자료형 범위를 벗어나면 자동으로 포화 연산을 수행

 

addWeighted()

가중치 합 구하기

addWeighted() 함수를 이용하여 두 입력 영상의 평균 영상을 생성

 

subtract()

두 영상의 뺄셈 연산을 수행

뺄셈의 대상이 되는 영상 순서에 따라 결과가 달라짐

두 영상의 뺄셈 순서에 상관없이 픽셀 값 차이가 큰 영역을 두드러지게 나타내고 싶다면 차이 연산을 수행

차이 연산은 뺄셈 연산 결과에 절댓값을 취하는 연산

차이 연산을 이용하면 두 개의 영상에서 변화가 있는 영역을 쉽게 찾을 수 있음

 

absdiff()

차영상 구하기

 

filter2D()

마스크 필터링 수행

 

blur()

평균값 필터링 수행

 

GaussianBlur()

가우시안 필터링 수행

 

randn()

가우시안 잡음으로 구성된 행렬을 생성하여 반환

 

bilateralFilter()

양방향 필터 수행

 

getAffineTransform()

어파인 변환 행렬을 구하는 함수

입력 영상에서 세 점의 좌표와 이 점들이 이동한 결과 영상의 좌표 세 개를 입력으로 받아 2×3 어파인 변환 행렬을 계산

 

WarpAffine(): 영상을 어파인 변환

 

transform()

어파인 변환 행렬을 가지고 있을 때, 일부 점들이 어느 위치로 이동하는지를 알고싶을 때 사용

 

resize()

영상의 크기를 변경

 

getRotationMatrix2D()

영상의 회전을 위한 어파인 변환 행렬을 생성

영상을 원점이 아닌 특정 좌표를 기준으로 회전시키거나 필요한 경우 크기 변환까지 함께 수행하는 어파인 변환 행렬을 쉽게 만들 수 있음

 

WarpAffine(): 영상을 어파인 변환

 

flip()

영상의 대칭 변환을 수행

영상을 가로 방향, 세로 방향, 또는 가로와 세로 양 방향 에 대해 대칭 변환한 영상을 생성

 

getPerspectiveTransform()

투시 변환 행렬을 구하는 함수

입력 영상에서 네 점의 좌표와 이 점들이 이동한 결과 영상의 좌표 네 개를 입력으로 받아 3×3 투시 변환 행렬을 계산

 

warpPerspective()

3×3 투시 변환 행렬을 가지고 있을 때, 영상을 투시 변환한 결과 영상을 생성

 

Sobel()

소벨 마스크를 이용하여 영상을 미분

입력 영상 src를 편미분한 결과를 dst에 저장

 

Scharr()

샤르 필터 마스크를 이용하여 영상을 미분

3×3 소벨 마스크보다 정확한 미분 계산을 수행

 

magnitude()

2차원 벡터의 x 방향 좌표와 y 방향 좌표를 이용하여 벡터의 크기를 계산

 

phase()

x 방향으로 미분과 y 방향으로 미분이 저장된 두 개의 행렬이 있을 때, 그래디언트의 방향을 계산

 

Canny()

캐니 에지 검출 알고리즘

 

HoughLines()

허프 변환 직선 검출을 수행

직선을 검출하는 작업은 Canny() 함수와 HoughLines() 함수를 호출

 

HoughLinesP()

확률적 허프 변환에 의한 직선 검출 방법

 

HoughCircles()

허프 그래디언트 방법을 사용하여 원을 검출

 

cvtColor()

영상의 색 공간을 다른 색 공간으로 변환

BGR2GRAY 색 공간 변환 코드는 BGR 컬러 영상을 그레이스케일 영상으로 변환할 때 사용

컬러 영상은 그레이스케일 영상에 비해 3배 많은 메모리를 필요

컬러 영상을 그레이스케일 영상으로 변환하는 주된 이유는 연산 속도와 메모리 사용량을 줄이기 위함

 

HSV 색 모델은 색상(hue), 채도(saturation), 명도(value)로 색을 표현하는 방식

색상은 색의 종류, 채도는 색의 순도, 명도는 빛의 세기

 

split()

다채널 행렬을 1채널 행렬 여러 개로 변환

 

merge()

1채널 행렬 여러 개를 합쳐서 다채널 행렬 하나를 생성

 

inRange()

행렬의 원소 값이 특정 범위 안에 있는지 확인

 

calcBackProject()

히스토그램 역투영 수행

 

threshold()

임계값을 이용하여 이진화 수행

 

이진화는 영상의 각 픽셀을 두 개의 분류로 나누는 작업

-입력 영상을 주요 객체 영역과 배경 영역으로 구분

-픽셀 값을 0 또는 255로 설정

-영상의 픽셀 값이 특정 값보다 크면 255로 설정하고, 작으면 0으로 설정

-THRESH_OTSU와 THRESH_TRIANGLE는 영상의 픽셀 값 분포를 분석하여 임계값을 자동으로 결정

 

adaptiveThreshold()

적응형 이진화 수행

적응형 이진화는 각 픽셀마다 서로 다른 임계값을 사용하는 기법

-영상의 모든 픽셀에서 정해진 크기의 사각형 블록 영역을 설정하고, 블록 영역 내부의 픽셀 값 분포로부터 고유의 임계값을 결정하여 이진화

 

getStructuringElement()

구조 요소 행렬 생성

 

erode()

침식 연산 수행

 

dilate()

팽창 연산 수행

 

morphologyEx()

열기(침식 후 팽창)와 닫기(팽창 후 침식) 연산수행

 

레이블링은 각각의 객체를 구분 하고 분석하는 작업

-레이블링 기법을 이용하여 각 객체의 위치와 크기 등 정보를 추출하는 작업은 객체 인식을 위한 전처리 과정으로 자주 사용

 

connectedComponents()

레이블링을 수행하여 레이블 맵, 레이블 개수 반환

 

connectedComponentsWithStats()

레이블 맵과 각 객체 영역의 통계 정보 를 한꺼번에 반환

 

findContours()

영상 내부 객체들의 외곽선을 검출

 

drawContours()

findContours() 함수로 검출한 외곽선 정보를 이용하여 영상 위에 외곽선을 그리기

 

boundingRect()

주어진 외곽선 점들을 감싸는 가장 작은 크기의 사각형, 즉 바운딩 박스를 구하기

 

minAreaRect()

외곽선 또는 점들을 감싸는 최소 크기의 회전된 사각형 구하기

 

minEnclosingCircle()

외곽선 또는 점들을 감싸는 최소 크기의 원을 구하기

 

arcLength()

곡선을 형성하는 점들의 집합을 가지고 있을 때, 해당 곡선의 길이를 구하기

 

contourArea()

외곽선 정보를 가지고 있을 때, 외곽선이 감싸는 영역의 면적 구하기

 

approxPolyDP()

외곽선 또는 곡선을 근사화

주어진 곡선의 형태를 단순화하여 작은 개수의 점으로 구성된 곡선을 생성

 

matchTemplate()

템플릿 매칭 수행

 

템플릿 매칭은 작은 크기의 부분 영상을 입력 영상 전체 영역에 대해 이동하면서 가장 비슷한 위치를 수치적으로 찾아내는 방식

템플릿은 찾고자 하는 대상이 되는 작은 크기의 영상

 

코너는 에지의 방향이 급격하게 변하는 부분

 

cornerHarris()

해리스 코너 응답 함수 값을 계산

cornerHarris() 함수가 반환하는 해리스 코너 응답 함수 값에 적절한 임계값 연산을 적용하면 영상에서 코너 위치를 모두 찾을 수 있음

 

KeyPoint 클래스는 특징점 좌표뿐만 아니라 특징점 검출 시 고려한 주변 영역의 크기(지름), 주된 방향(각도), 옥타브 정보(반응성) 등을 멤버 변수로 가지고 있음

-detect() 멤버 함수는 영상에서 키포인트를 검출

-compute() 함수는 검출된 키포인트를 표현하는 기술자를 생성

-detectAndCompute() 멤버 함수는 키포인트 검출과 기술자 생성을 동시에 수행

 

drawKeypoints()

검출된 특징점이 그려진 영상을 반환

 

drawMatches()

매칭 입력 영상을 가로로 이어 붙임

 

findHomography()

두 영상 평면에서 추출된 특징점 매칭 정보로부 터 호모그래피를 계산

 

Stitcher_create()

여러 장의 영상을 이어 붙이기 위한 Stitcher 객체 생성

 

stitcher.stitch(imgs)

영상 이어붙이기

 

---------------------------------

HOG 보행자 검출 알고리즘

 

1. cv2.HOGDescriptor

HOG 기술자 객체 생성 및 보행자 검출을 위해 학습된 분류기 계수 불러오기

 

2. cv2.HOGDescriptor.setSVMDetector

SVM 분류기 계수 등록하기

 

3. cv2.HOGDescriptor.detectMultiScale

HOG 멀티스케일 객체 검출 함수

----------------------------------

QR 코드 검출

 

1. QRCodeDetector 객체 생성

2. QR 코드 영역 검출

detect()

3. QR코드에 저장된 문자열 추출

decode()

-----------------------------------

2.3. 즉, QR 코드 검출과 해석을 동시에 수행

detectAndDecode()