ROI
#include <cv.h>
#include <highgui.h>
int main(int argc, char ** argv) { IplImage* src;
if(argc==7 && ((src=cvLoadImage(argv[1], 1))!=0)) { int x=atoi(argv[2]); int y=atoi(argv[3]); int width=atoi(argv[4]); int height=atoi(argv[5]); int add=atoi(argv[6]);
cvSetImageROI(src, cvRect(x, y, width, height)); cvAddS(src, cvScalar(add), src); cvResetImageROI(src);
cvNamedWindow("Roi_Add", 1); cvShowImage("Roi_Add", src); cvWaitKey();
cvReleaseImage(&src); cvDestroyWindow("Roi_Add"); }
return 0; } |
widthStep
#include <cv.h>
#include <highgui.h>
int main(void) { IplImage *interest_img; CvRect interest_rect;
interest_img=cvLoadImage("lueseypid.jpg", 1); interest_rect=cvRect(180, 100, 100, 100);
IplImage* sub_img=cvCreateImageHeader( cvSize( interest_rect.width, interest_rect.height ), interest_img->depth, interest_img->nChannels );
sub_img->origin=interest_img->origin; sub_img->widthStep=interest_img->widthStep;
sub_img->imageData=interest_img->imageData + interest_rect.y * interest_img->widthStep + interest_rect.x * interest_img->nChannels;
cvAddS(sub_img, cvScalar(150), sub_img);
cvReleaseImageHeader(&sub_img);
cvNamedWindow( "WidthStep", CV_WINDOW_AUTOSIZE ); cvShowImage( "WidthStep", interest_img ); cvWaitKey(); } |
ROI를 설정 또는 해제하여 사용하는 방법이 더 편리하지만, 굳이 widthStep 이용방법을 사용해야하는 이유?
widthStep을 이용하면 관심 영역을 여러개 지정하여 영상 처리를 할 수 있기 때문이다. ROI를 사용하면 관심 영역을 순차적으로 설정 및 해제를 하여 영상 처리를 수행한다.
'Developer > OpenCV' 카테고리의 다른 글
HighGUI (0) | 2013.01.09 |
---|---|
행렬과 영상에 관한연산 함수 (0) | 2013.01.08 |
OpenCV의 기본 데이터타입 (0) | 2013.01.04 |
사진에 스무딩효과(가우시안) 주기 (0) | 2013.01.03 |
OpenCV 정지영상, 동영살 출력하기 (1) | 2013.01.03 |