관심쟁이 영호

[#10] OpenCV(With. C++) ㅣ Vector클래스, Range클래스, Mat클래스 기타 메서드 본문

학교공부/OpenCV

[#10] OpenCV(With. C++) ㅣ Vector클래스, Range클래스, Mat클래스 기타 메서드

관심쟁이 영호 2020. 11. 13. 01:30
반응형

안녕하세요!

관심쟁이 영호입니다.

 

오늘은 Vector클래스, Range클래스, Mat클래스의 기타 메서드에 관해서 공부할 예정이에요!

 


Vector, Range, Mat기타 메서드

1. Vector클래스

배열과 같다고 생각하시면 됩니다!

 

바로 살펴볼게요!

 

vector(원소의 개수, 각 원소에 할당하는 값)

insert(삽입할 위치, 삽입할 값)

erase(삭제할 원소의 위치)

 

capacity()

벡터에 할당된 공간의 크기반환

 

size()

벡터내 원소의 개수 반환

 

begin()

벡터의 첫 번째 원소를 가리키는 반복자 반환

 

end()

벡터의 마지막 원소를 가리키는 반복자 반환

 

push_back()

마지막에 원소 추가

 

pop_back()

마지막 원소 제거

 

reverse()

벡터의 원소를 저장할 공간 예약

 

이렇게 있네요!!

저것을 그냥 배열 쓰듯이 사용하시면 됩니다!

 

2. Range클래스

Range(시작 위치, 마지막 위치-범위 미포함)

Range 클래스의 생성자입니다!

 

size()

서브 시퀀스의 크기를 반환!

 

empty()

서브 시퀀스가 비어있는지 확인

 

all()

서브 시퀀스가 가득차 있는지를 확인!

 

그럼 Range클래스와 관련된 Mat헤더 함수를 살펴볼게요!

 

rowRange()

기존 행렬에서 지정된 연속된 행을 위한 행렬 헤더를 생성하여 반환한다.

 

colRange()

기존 행렬에서 지정된 연속된 열을 위한 행렬 헤더를 생성하여 반환한다.

 

locateROI()

부분 행렬에서 부모 행렬의 크기와 위치를 알려준다.

 

adjustROI()

부분 행렬에서 관심영역의 크기와 위치를 조정한다.

 

이렇게 있어요!

코드를 보면서 살펴볼게요!

#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

void main() {
	
	Range r1(0, 3), r2(3, 7);

	int data[] = {
		10, 11, 12, 13, 14, 15, 16,
		20, 21, 22, 23, 24, 25, 26,
		30, 31, 32, 33, 34, 35, 36,
		40, 41, 42, 43, 44, 45, 46
	};

	Mat m1(5, 7, CV_32S, data);
	Mat m2 = m1(r1, r2); //m1에 range를 m2에 넣어주기!
	Mat m3 = m1(r1, r1);

	m2.adjustROI(-1, 1, 2, -1); //영역 바꿔주기! 위쪽으로 -1값, 아래쪽으로 1, 왼쪽으로 2, 오른쪽으로 -1만큼!
	m3.adjustROI(0, -1, -2, 2);


	

}

 

3. Mat 기타 메서드

release()

Mat 행렬 메모리 해제!

 

cross()

두 개의 3- 원소 벡터들의 외적을 계산!

 

dot()

두 벡터의 내적을 계산!

 

inv()

행렬에 대한 역행렬 계산!

 

mul()

두 행렬의 각 원소 간 곱셈을 수행

 

t()

해당 행렬의 전치를 수행!

 

saturate_cast <_type>

<>안에 있는값의 최대, 최소값을 넘어버리면 가장 가까운 값으로 이동시켜주는 메서드입니다!

 

CV_Assert()

실행시간에 조건을 체크하는 매크로! / 조건이 false이면 예외 발생!

 

CV_Error()

해당 에러 코드 발생시, msg 문자열 출력!

 

오늘은 여기까지 해보겠습니다!!

고생하셨습니다 ㅎㅎ

 

 

300x250
Comments