Fogeaters, Light The World.

26

2016-Mar

[OpenCV] Mat 픽셀 접근방법

작성자: title: MoonBlonix IP ADRESS: *.148.87.98 조회 수: 1677

OpenCV Mat 접근방법

OpenCV에서 이미지로 처리하는 데이터자료형 중 내가 가장 많이 쓰는 형태는 cv::Mat 이다. Mat에 접근하는 방법은 총 3가지가 있다.

1. 가장 기본적인 방법 at

1
2
cv::Mat image(IMAGE_ROWS, IMAGE_COLS, CV_TYPE);
image.at<DATA_TYPE>(ROW, COL);
cs
- IMAGE_ROWS: 이미지 크기의 높이
- IMAGE_COLS: 이미지 크기의 너비
- CV_TYPE: Mat의 한 픽셀에 들어갈 데이터 타입
  e.g) CV_8UC4: 한픽셀당 8bit짜리를 4 Channel 사용(RGBA이미지 일 때 많이 사용)
- DATA_TYPE: Mat 안에 들어갈 데이터 타입. (e.g.: float, int, cv::Vec3f 등)
- ROW: 접근하려는 픽셀의 행
- COL: 접근하려는 픽셀의 열

장점: 유효성 검사를 진행한 다음에 접근하므로 안정적이고 정확하게 접근 할 수 있음.
단점: 픽셀 접근에 있어 느림


2. 조금 더 빠른 접근 ptr

1
2
cv::Mat image(IMAGE_ROWS, IMAGE_COLS, CV_TYPE);
image.ptr<DATA_TYPE>(ROW,COL);
cs

위의 방법과 파라미터 종류와 사용하는 방법 모두 동일하지만, 포인터형으로 반환해서 그에 맞게 포인터 변수를 사용해서 접근한다는 점이 다르다. 장점으로는 위의 방법인 at 보다는 빠르지만, 데이터에 직접 접근하는 방법인 아래 3번보다는 느린 접근방법이다.

3. DATA에 직접 접근

1
2
3
cv::Mat image(IMAGE_ROWS, IMAGE_COLS, CV_TYPE);
DATA_TYPE* data = (DATA_TYPE*) image.data;
data[ROW * IMAGE_COLS + COL]
cs

cv::Mat 형태를 일반 C++에서 사용하는 데이터 array로 변환하여 직접 접근하기 때문에 가장 빠르게 접근할 수 있지만, 유효성 검사를 거치지 않아 잘못 접근하였을 때 알아내기 힘들다는 단점이 있다. 

profile
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15128
72 [VS] 다중 프로젝트 dll로 연결하기 title: MoonBlonix 2016-11-13 1627
71 [VS] DllMain 에서 DLL 호출하기 title: MoonBlonix 2016-11-13 1593
70 [Win API] 유니코드, 멀티바이트, TCHAR 문자열함수 title: MoonBlonix 2016-11-08 1458
69 [AVR] LED 입출력을 제어해보자 - 1 file title: Zwei츠바이 2016-09-16 1602
68 [알고리즘] 문자열 검색 title: MoonBlonix 2016-04-17 1700
67 [AVR] ATTiny13A 그리고 ADC에 대해 + 2 title: MoonBlonix 2016-04-01 1545
66 [OpenCV] 32bit(x86) 빌드 및 초기설정(GPU, TBB, IPP 등) title: MoonBlonix 2016-03-29 1544
» [OpenCV] Mat 픽셀 접근방법 title: MoonBlonix 2016-03-26 1677
64 [OpenCV] Mat 구조를 Tesseract 에서 쓸 수 있게 title: MoonBlonix 2016-03-24 1454
63 [영상처리] Bitmap 구조 분석 title: MoonBlonix 2016-03-24 1705
62 [OpenCV] 3.x - 캠 사용 & 얼굴 인식 title: MoonBlonix 2016-03-24 1682
61 [tesseract] (3.0.4) vs2013으로 빌드하기 title: MoonBlonix 2016-03-23 1606
60 [OpenCV] 3.1 설치하기 file title: MoonBlonix 2016-03-17 1426
59 AVR / ARM / DSP 비교 file + 2 title: MoonBlonix 2016-03-12 1737
58 (작성중)[OpenCV/ARM/DSP] 임베디드 환경에서의 OpenCV 사용 title: MoonBlonix 2016-03-12 1604
57 [OpenCV] 예제 코드 모음 file title: MoonBlonix 2016-03-12 1792
56 [OpenCV] 마커 추출 file title: MoonBlonix 2016-03-12 1405
55 [OpenCV] 영상 이진화 & 레이블링(Blob Labeling) file + 3 title: MoonBlonix 2016-03-12 1536
54 [OpenCV] 문자 인식 file + 1 title: MoonBlonix 2016-03-12 1467
53 [AVR] ATTiny13A 에 대한 숨겨진 사실들 title: MoonBlonix 2016-03-10 1629