본문 바로가기

컴퓨터 비전 study

(7)
InPutArray와 OutputArray InPutArray - OpenCV 함수의 입력으로 사용 OutPutArray - OpenCV 함수의 출력으로 사용 1. InPutArray Mat, vector 등 다양한 타입을 표현할 수 있는 인터페이스 클래스, 주로 OpenCV 함수의 입력 인자 자료형으로 사용 OpenCV 라이브러리 내부에서 코드 구현 편의상 사용, 사용자가 직접 InputArray 타입의 변수를 생성하는 것은 금지 _InPutArray::getMat() 함수 - Mat 객체타입 형태로 변환 Mat _InPutArray::getMat(int idx=-1) const; // idx = 참조할 행 번호 2. OutputArray 영상을 입력으로 받아 영상처리를 수행하고, 그 결과를 다시 영상으로 생성하여 반환할때 함수의 return ..
Open CV Vec와 Scalar 클래스 1. Vec 클래스 벡터는 같은 자료형을 가진 원소 몇개로 구성된 데이터 형식 //Matx 클래스 - 작은 크기의 행렬을 표현하기 위해 만들어진 템플릿 클래스 Vec클래스 : Matx 클래스를 상속받아 만들어지며, 열 개수가 1개로 특화된 벡터 표현 클래스 템플릿을 사용하기 때문에 실제 코드에선 괄호 사이에 데이터 자료형과 데이터 갯수 명시해야함 Vec{b|s|s|i|f|d} // num-of-data 부분에 2,3,4등 작은 숫자 지정가능, b는 uchar , s는 short, w는 ushort, i는 int, f는 float, d는 double 자료형 의미 Vec 클래스는 아래와 같이 []연산자가 재정의 되어있다. template inline _TP& Vec::operator [](int i) { C..
OpenCv Mat 클래스(3) 1.행렬의 원소값 참조 1. Mat::at() (1) 행,열 나타내는 두t개의 정수를 인자로 받아 해당 위치의 행렬 원소값을 참조형식으로 반환 template _TP& Mat::at(int y, int x) 2. Mat::ptr() (1) Mat 행렬에서 특정 행의 첫 번째 원소 주소를 반환 template _TP* Mat::ptr(int y) 3. Matlterator_ 반복자 위의 1,2번 함수같은 경우 함수 인자로 전달된 값이 행렬의 크기르 벗어나면 에러가 발생. 이러한 단점을 해소하기위해 반복자 개념을 도입. 사용방법은 C++언어와 비슷 for (MatIterator_ it=mat1.begin(); ir !=mat1.end(); ++it) { (*it)++; } 2. 행렬 정보 참조하기 1. Ma..
Open CV Mat 클래스(2) 1. 행렬의 복사 행렬을 복사하는 가장 간단한 방법은 복사 생성자 또는 대입 연산자를 이용하는 방법이다. Mat img2 = img1 ; // 복사 생성자 (얕은 복사) Mat img3; img3 = img1 ; // 대입 연산자(얕은 복사) 픽셀 데이터를 공유하는 것이 아닌, 새로 메모리 공간을 할당하여 데이터 전체를 복사하고 싶다면, clone 함수 또는 copyTo 함수 사용 Mat Mat::clone() const; -> Mat img4 = img1.clone(); // 깊은 복사 void Mat::copyTo(OutputArray m) const; void Mat::copyTo(OutputArray m, InputArray mask) const; m : 복사본이 저장될 행렬, 만약 원 행렬과 크..
OpenCV Mat 클래스(1) 1.1 Mat 클래스 : OpenCV에서 가장 많이 사용하며, 고차원 행렬을 표현할 수 있고 한 개 이상의 채널을 가질 수 있다. 정수,실수,복소수 등으로 구성된 행렬 또는 벡터 / 그레이 스케일 / 컬러 영상 / 벡터필드, 포인트 클라우드, 텐서, 히스토그램 등의 정보 를 저장할 수 있다. > But, 2차원 영상 데이터를 저장하고 처리하는 용도로 가장 많이 쓰인다. Mat::dims > Mat 행렬의 차원 (영상과 같은 2차원 행렬의 dims = 2) >int dims; Mat::rows , Mat::cols > 2차원 행렬의 크기(rows 는 행 개수=세로 픽셀크기, cols 는 열 개수=가로 픽셀크기) > 2차원 행렬에서만 의미있는 값을 가지며, 3차원 이상의 행렬에서는 -1이 저장된다. 3차원 ..
OpenCV 기본 자료형 클래스 기본 자료형 클래스 Point_ : 픽셀의 좌표 표현 Size_ : 사각형 영역의 크기 표현 Rect_ : 사각형의 위치와 크기 정보 표현 RotatedRect : 회전된 사각형 표현 Range : 범위 표현 String : 문자열 표현 1.1 Point_ 클래스 : 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스, x,y 멤버변수 Point::dot() 두 점 사이의 내적을 계산하여 반환 > _Tp dot(const Point_& pt) const; Point::ddot() 두점 사이의 내적을 실수형으로 계산하여 double 자료형으로 반환 > double ddot(const Point_& pt) const; Point::cross() 두 점 사이의 외적을 반환 > double cross(c..
Open CV 개요와 기초 사용법 unsigned char 자료형 - 1바이트의 크기를 가짐, 부호없는 8bit 정수값을 지정할 수 있음 -> 그레이 스케일 값을 표현하기에 가장 적합한 자료형-> open CV 라이브러리에서는 uchar 자료형으로 이름 재정 open CV = open source vision library의 약어 openCV 주요 모듈 calib3d - 카메라 캘리브레이션과 3차원 재구성 core - 행력, 벡터 등 openCV 핵심 클래스와 연산 함수 dnn - 심층 신경망 기능 feartures2d - 2차원 특징 추출과 특징 벡터기술, 매칭방법 flann - 다차원 공간에서 빠른 최근방 이웃 검색 highgui - 영상의 화면 출력, 마우스 이벤트 처리 등 사용자 인터페이스 imgcodecs - 영상 파일 입출력 ..