'중도연재종료/OPENCV'에 해당되는 글 5건

  1. 2013.06.09 cvMat
  2. 2013.06.09 이미지 열기
  3. 2013.06.08 CvMat 행렬 자료구조
  4. 2013.06.08 기초
  5. 2013.06.08 시작...
중도연재종료/OPENCV2013. 6. 9. 15:45

CvMat* cvCreateMatHeader(int rows, int cols,int type);

행, 열과 행렬요소의 자료형을 인수로 주면 행렬의 헤더를 생성하여 포인터를 반환


void cvCreateDate(CvArr* arr);

행렬 또는 영상 포인터인 arr의 헤더에 맞게 행렬 또는 영상 메모리 할당.


void cvReleaseData(CvArr* arr);

포인터인 arr에 할당된 메모리만을 해제한다.


CvMat* cvInitMatHeader(CvMat* mat, int rows, int cols, int type, void* date=NULL, int step=CV_AUTOSTEP);

인수 rows, cols, type, data, step을 이용하여 CvMat포인터 인수인 mat을 초기화 한다.


CvMat cvMat(int rows, int cols, int type, void* date=NULL);

CvMat 자료형의 인스턴스를 생성하여 반환.


cvSetReal*D

1채널 행렬.영상에서만 사용 가능

idx에 의해 지정된 요소 값을 double형 인수인 value값으로 변경한다.


cvSet*D

1,2,3채널의 행렬 및 영상에서 사용

idx에 의해 지정된 요소 값을 CvScalar형 인수인 value값으로 변경


cvGetReal*D

1채널에서만 사용 가능

idx등에 의해 지정된 요소 값을 double형으로 반환


cvGet*D

1,2,3채널에서 사용 가능

CvScalar형으로 반환


cvmGet, cvmSet

1채널인 실수 행렬에서만 사용 가능

cvmGet : row, col위치의 요소 값을 double형으로 반환

cvmSet : row,col위치의 요소 값을 double형 인수인 value값으로 변경


cvPtr*D

주어진 행렬 또는 영상에서 첨자로 지정된 요소의 포인터를 반환


cvSet, cvSetZero

arr의 모든 요소 또는 화소 값을 value, 0로 변경


CV_MAT_ELEM




'중도연재종료 > OPENCV' 카테고리의 다른 글

이미지 열기  (0) 2013.06.09
CvMat 행렬 자료구조  (0) 2013.06.08
기초  (0) 2013.06.08
시작...  (0) 2013.06.08
Posted by 십자성군
중도연재종료/OPENCV2013. 6. 9. 01:35

IplImage* ImageOpen()

{

    IplImage* image = 0;

    image = cvLoadImage("t9t9.jpg", 1);

 

    cvNamedWindow( "T9-viewer", 1);

    cvShowImage( "T9-viewer", image );

    cvWaitKey(0);

 

    cvDestroyWindow( "T9-viewer" );

return image;

}


1.IplImage

typedef struct _IplImage

{

int nSize;

int ID;

int nChannels;            //채널의 개수. 1~4

int alphaChannel;       

int depth;                    //화소의 비트표현 depth정보를 갖음(8비트 unsigned~64비트 배정도 실수)

char colorModel[4];

char channelSeq[4];

int dataOrder;             //채널 자료의 저장 순서{0:인터리브 컬러채널, 1:분리 컬러채널}

int origin;                    //영상의 원점{0:왼쪽 상단, 1:왼쪽 하단(비트맵 처럼). 기본 0}

int align;

int width;                    //가로방향 화소수

int height;

struct _IplROI *roi;        //Region Of Interest(ROI) 영상에서 관심영역.coi, xOffset,yOffset,width,height

struct _IplImage *maskROI;

void *imageld;

struct _IplTileInfo *tileInfo;

int imageSize;

char *imageData;

int widthStep;            //한 행의 바이트 개수

int BorderMode[4];

int BorderConst[4];

char *imageDataOrigin;

}


IplImage* cvLoadImage(const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR);

:iscolor-> CV_LOAD_IMAGE_COLOR : 3채널 컬러 영상, CV_LOAD_IMAGE_GRAYSCALE : 1채널 그레이 스케일, CV_LOAD_IMAGE_UNCHANGED : 원본 영상 그대로


int cvSaveImage(const char* filename, const CvArr* image);

영상을 파일에 저장. 포맷은 파일 확장자에 의해 정해지며, 8비트 단일 채널과, 3채널 컬러영상으로 저장 가능


int cvWaitKey(int delay=0);

delay/1000초 만큼 지연 대기. delay=0이면 키를 누를 때 까지 무한히 대기


int cvNamedWindow(const char* name, int flags);

윈도우 생성. name은 식별 ID로 사용.

flag = CV_WINDOW_AUTOSIZE : 영상의 크기에 맞게 윈도우 크기 자동 조절


void cvShowImage(const char* name, const CvArr* image);

name 이름을 갖는 윈도우에 영상 image를 보여준다. 영상 크기에 맞게 윈도우의 크기가 스케일 된다.


void cvDestroyWindow(const char* name);

윈도우 파괴. cvDestroyAllWindows(void)로 모든 윈도우 파괴 가능

'중도연재종료 > OPENCV' 카테고리의 다른 글

cvMat  (0) 2013.06.09
CvMat 행렬 자료구조  (0) 2013.06.08
기초  (0) 2013.06.08
시작...  (0) 2013.06.08
Posted by 십자성군
중도연재종료/OPENCV2013. 6. 8. 23:04

2차원 행렬을 위한 자료구조이다.




typedef struct CvMat

{

    int type;    //행렬 요소 자료형

    int step;


    /* for internal use only */

    int* refcount;

    int hdr_refcount;


    union

    {

        uchar* ptr;

        short* s;

        int* i;

        float* fl;

        double* db;

    } data;


#ifdef __cplusplus

    union

    {

        int rows;

        int height;

    };


    union

    {

        int cols;

        int width;

    };

#else

    int rows;

    int cols;

#endif


}

CvMat;


CvMat 행렬 생성 및 파괴


행렬의 헤더를 생성한다 : CvMat 구조체의 멤버변수를 초기화 한다.


1)CvMat* cvCreateMat(int rows, int cols, int type);

CV_8UC1과 같은 행렬요소의 자료형(type)을 이수로 주면, 행렬의 헤더를 생성하고, 행렬 요소를 저장하기 위한 메모리를 할당하여 포인터를 반환한다.


2)void cvReleaseMat(CvMat** mat);

행렬을 생성할 때 할당된 메모리를 해제한다. 2중 포인터에 주의


3)void cvSetReal2D(CvArr* arr, int idx(), int idx1, double value);

2차원 행렬(CvMat) 또는 영상(IplImage)포인터인 arr의 idx0 행, idx1 열의 요소 값에 value의 값을 저장한다.

1채널인 행렬 또는 영상에서만 사용할 수 있다.

:행렬, 영상 포인터를 받아 그 배열의 idx0열 idx1행에 value 값 저장.


4)double cvGetReal2D(const CvArr* arr, int idx0, int idx1);

2차원 행렬 또는 영상 포인트인 arr의 행 열의 "요소값"을 double형으로 반환한다.

1채널인 행렬 또는 영상에서만 사용 가능하다


5)CvArr 자료형(typedef void CvArr;)

서로 다른 자료형 사이에 형 변환을 위해 사용된다.

CvMat* 또는 IplImage* 형태의 인수를 전달 받는데 사용한다.


cvSetReal2D, cvGetReal2D 은 행렬 및 영상 모두에 사용할 수 있음에 주의 


1채널은 Gray, 3채널은 3요소 영상(RGB,HSI,vCbCr)...을 말하겠지...


ex)

'중도연재종료 > OPENCV' 카테고리의 다른 글

cvMat  (0) 2013.06.09
이미지 열기  (0) 2013.06.09
기초  (0) 2013.06.08
시작...  (0) 2013.06.08
Posted by 십자성군
중도연재종료/OPENCV2013. 6. 8. 22:32


자료형 

멤버변수 

인라인 함수 이름 

설명 

CvPoint 

x,y 

cvPoint 

int형 2D 화소 위치 

CvPoint2D32f 

x,y, 

cvPoint2D32f 

float형 2D 화소 위치 

CvPoint2D65f 

x,y 

cvPoint2D64f 

double형 2D 화소 위치 

CvScalar 

valp4[ 

cvScalar,

cvRealScalar,

cvScalarAll 

화소의 밝기 값 또는 컬러 값 표현

그레이 스케일 영상 : val[0]

컬러 영상: val[0]=B

               val[1]=G             

               val[2]=R

               val[3]=alpha


인라인 함수 설명

CV_INLINE CvPoint cvPoint(int x, int y)

{

CvPoint p;

p.x=x;

p.y=y;

return p;

}


CV_INLINE CvPoint2D32f cvPoint2D32f(double x, double y)

{

CvPoint2D32f p;

p.x = (float)x;

p.y = (float)y;

return p;

}


CV_INLINE CvPoint2D64f cvPoint2D32f(double x, double y)

{

CvPoint2D64f p;

p.x = (float)x;

p.y = (float)y;

return p;

}


CV_INLINE CvScalar cvScalar(double val0, double val1 CV_DEFAULT(0), double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))

{

CvScalar scalar;

scalar.val[0]=val0; scalar.val[1]=val1;

scalar.val[2]=val2; scalar.val[3]=val3;

return scalar;

}


CV_INLINE CvScalar cvRealScalar(double val0)

{

CvScalar scalar;

scalar.val[0]=val0;

scalar.val[1]=scalar.val[2]=scalar.val[3]=0;

return scalar;

}


CV_INLINE Cvscalar cvScalarAll(double val0123)

{

CvScalar scalar;

scalar.val[0]=val0123;

scalar.val[1]=val0123;

scalar.val[2]=val0123;

scalar.val[3]=val0123;

}


ex1)


#include <iostream>

#include <opencv\cv.h>

#include <opencv\highgui.h>



int test01()

{

CvPoint pt0 = cvPoint(10,20);

CvPoint2D32f pt1 = cvPoint2D32f(30.0,40.0);

CvPoint2D64f pt2 = cvPoint2D64f(50.0,60.0);


printf("pt0 : %d, %d\n",pt0.x,pt0.y);

printf("pt1 : %f,%f\n",pt1.x,pt1.y);

printf("pt2 : %f, %f\n", pt2.x,pt2.y);

return 0;

}


int test02()

{

CvScalar color1 = cvScalar(255,255,255);

CvScalar color2 = cvScalar(255);

CvScalar color3 = cvRealScalar(255);

CvScalar color4 = cvScalarAll(255);

printf("color1.val: %f, %f, %f, %f\n", color1.val[0], color1.val[1], color1.val[2], color1.val[3]);

printf("color2.val: %f, %f, %f, %f\n", color2.val[0], color2.val[1], color2.val[2], color2.val[3]);

printf("color3.val: %f, %f, %f, %f\n", color3.val[0], color3.val[1], color3.val[2], color3.val[3]);

printf("color4.val: %f, %f, %f, %f\n", color4.val[0], color4.val[1], color4.val[2], color4.val[3]);


return0;

}

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

typedef struct

{

int width;

int height;

}CvSize;


CV_INLINE CvSize cvSize(int width, int height)

{

CvSize s;

s.width = width;

s.height = height;

return s;

}


typedef struct CvRect

{

int x;

int y;

int width;

int height;

}CvRect;


CV_INLINE CvRect cvRect(int x, int y, int width, int height)

{

CvRect r;

r.x = x;

r.y = y

r.width = width;

r.height = height;

return r;

}


ex3)

int test03()

{

CvSize size = cvSize(720,480);

CvRect rect = cvRect(100,100,400,200);

CvPoint pt1,pt2;


printf("size : %d, %d\n", size.width, size.height);


pt1.x = rect.x;

pt1.y = rect.y;


pt2.x = rect.x + rect.width;

pt2.y = rect.y + rect.height;


printf(":Left Top Point(p1) : %d, %d\n", pt1.x, pt1.y);

printf("Right Bottom Point(p2) : %d, %d\n", pt2.x, pt2.y);

return 0;

}


...cvScalar는 가변인수함수?


함수, 변수 등의 형태를 잘 알고 사용하자!

'중도연재종료 > OPENCV' 카테고리의 다른 글

cvMat  (0) 2013.06.09
이미지 열기  (0) 2013.06.09
CvMat 행렬 자료구조  (0) 2013.06.08
시작...  (0) 2013.06.08
Posted by 십자성군
중도연재종료/OPENCV2013. 6. 8. 22:27

영상처리 기초공부는 했고...


심심할때마다 하기로 함.

'중도연재종료 > OPENCV' 카테고리의 다른 글

cvMat  (0) 2013.06.09
이미지 열기  (0) 2013.06.09
CvMat 행렬 자료구조  (0) 2013.06.08
기초  (0) 2013.06.08
Posted by 십자성군