Computer Vision2009. 3. 12. 09:17

() 글을 읽기 전에 

 글은 저와 같은 OpenCV초보자를 위해서 정리하는 것입니다.

전문가시라면 굳이 읽을 필요가 없습니다.

공부하면서 정리하는 글이라서 서툰 부분이 많이많이 보입니다.


이미지에서 특정 부분 추출하기


cvCopy(

const CvArr * src,

CvArr *          dst,

const CvArr * mask = NULL

);


이것은 원본과 복사 대상이 같은 크기와 , 같은 타입의 이미지라는 전제하에서 이루어 집니다.



이미지의 크기가 틀리다면, 다음 함수를 써서 원본의 이미지중에 일부를 추출할 수 있습니다.


void cvSetImageROI( IplImage* image, CvRect rect );


CvRect는 사각형 영역을 설정하는 것입니다.


cvRect는 다음과 같이 정의되어 있습니다.


 typedef struct CvRect

    {

        int x; /* x-coordinate of the left-most rectangle corner[s] */

        int y; /* y-coordinate of the top-most or bottom-most

                  rectangle corner[s] */

        int width; /* width of the rectangle */

        int height; /* height of the rectangle */

    }

    CvRect;


그럼 이제 이미지를 복사하여 만들어 보는 것을 해보겠습니다.


소스는 간단해서 그닥 어려운 부분이 없습니다.

원본에서 ROI를 지정한 뒤에 복사하면 잘 됩니다.


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


#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <errno.h>


#include <opencv/cv.h>

#include <opencv/highgui.h>


#define IMG_WIDTH 400

#define IMG_HEIGHT 400


int main(int argc , char *argv[]){




  // 이미지 읽기 

  IplImage *imgA = cvLoadImage( "4390m.jpg", 1);

  // 대상 이미지 확정

  IplImage *imgB = cvCreateImage( cvSize(IMG_WIDTH ,IMG_HEIGHT ),

  IPL_DEPTH_8U, 3);


  // ROI 설정한다.

  cvSetImageROI( imgA , cvRect(200,200,IMG_WIDTH,IMG_HEIGHT ));

  // 이미지를 복사한다.

  cvCopy(imgA,imgB,0);


  ////////////////////////////////////////////////////////////


  cvSaveImage( "image_result.jpg", imgB);

  cvNamedWindow("Extract Image",0);

  cvShowImage("Extract Image",(CvArr*)imgB);

  cvWaitKey(0);

  cvDestroyWindow("Extract Image");


  cvReleaseImage( &imgA );

  cvReleaseImage( &imgB );


  return 0;

}


아래 그림은 결과 이미지입니다


사용자 삽입 이미지

'Computer Vision' 카테고리의 다른 글

OpenCV - Convert Image  (0) 2009.04.11
OpenCV - Image Mask  (0) 2009.03.16
OpenCV - Image Rotation & Scale  (0) 2009.03.10
Rob Hess의 SIFT [5]  (2) 2009.03.02
Rob Hess의 SIFT [4]  (0) 2009.02.25
Posted by GUNDAM_IM