cvGetMat 함수는 CvMat 행렬 헤더 포이터를 반환하고,
cvGetImage 함수는 IplImage 영상의 헤더 포인터를 반환한다.
결과 화면
선택한 영역의 행렬을 나타내고 있다.
위에서 나타난 행렬을 다시 이미지영상으로 나태낸 것이다.
- #include "cv.h"
- #include "highgui.h"
- #include <stdio.h>
- void PrintMat(const CvMat *mat, const char *strName);
- int main()
- {
- IplImage *srcImage;
- if((srcImage=cvLoadImage("lena.jpg", CV_LOAD_IMAGE_GRAYSCALE)) == NULL)
- return -1;
- CvMat matHeader, *pSrcMat;CvMat 함수로 행렬 헤더 포인터를 선언한다.
- cvSetImageROI(srcImage, cvRect(0, 0, 50, 50));영상 srcImage의 ROI(region of interest)를
- //cvRect(0,0,50,50)로 설정
- cvRectangle(srcImage, cvPoint(0, 0), cvPoint(50, 50), CV_RGB(0, 0, 255), 2); //선택영역 보기 위한 설정
- pSrcMat = cvGetMat(srcImage, &matHeader);srcImage를 pSrcMat로 변환한다.
- //&matHeader와 pSrcMat은 동일한 주소이다.
- IplImage *dstImage, tmpImage;
- dstImage = cvGetImage(pSrcMat, &tmpImage);
- cvNamedWindow("dstImage", CV_WINDOW_AUTOSIZE);
- cvShowImage("dstImage", dstImage);
- PrintMat(pSrcMat, "pSrcMat");
- cvWaitKey(0);
- cvDestroyAllWindows();
- cvReleaseImage(&srcImage);
- return 0;
- }
- void PrintMat(const CvMat *mat, const char *strName)
- {
- int x, y;
- double fValue;
- for(y=0; y<mat->rows; y++)
- {
- for(x=0; x<mat->cols; x++)
- {
- fValue = cvGetReal2D(mat, y, x);
- }
- }
- }
lena.jpg 이미지의 cvRect(0, 0, 50, 50)의 영역을 불러 온것이다.
반응형
'IT > OpenCV' 카테고리의 다른 글
반전영상 (0) | 2014.12.19 |
---|---|
cvLUT를 사용한 반전영상 (0) | 2014.12.19 |
커널 Kernel in Image processing (0) | 2014.12.19 |
PDB 파일을 찾거나 열 수 없습니다 (0) | 2014.12.19 |
영상 카메라 띄우기 (0) | 2014.12.19 |