Computer Vision/OpenCV

[OpenCV] Mat 데이터 픽셀에 접근하는 방법

Kanais 2015. 4. 17. 19:57



개발환경

사용툴       : Visual Studio 2013

라이브러리 : openCV library 2.4.10

프로젝트    : Visual C++ console application

개발날짜    : 2015-04-17


출처 : 영혼이 있는 엔지니어

참고 : IplImage 와 Mat 타입 비교 - MusE & ICARUS

       Mat 접근방법 - REAL STORY
       OpenCV image 접근방법 및 성능 그리고 병렬처리  - HSlee


 RGB 이미지일 경우. Mat 타입 접근 방법



IplImage* FaceDetection::Covert_Frame(IplImage* _origin, Mat skincolor)

{

        IplImage* origin = cvCloneImage(_origin);

        uchar* skindata = 0;

        int index = 0;

        unsigned char pixel_val = 255;

 

        for (int i = 0; i < origin->height; i++){

               skindata = skincolor.ptr<uchar>(i);

               for (int j = 0; j < origin->width; j++){

                       if (skindata[j] == 0) {

                              index = (j * 3) + (i * origin->widthStep);

                              origin->imageData[index] = pixel_val;

                              origin->imageData[index + 1] = pixel_val;

                              origin->imageData[index + 2] = pixel_val;

                       }

               }

        }

        return origin;

}