OpenCV2.4 에서 raw 파일 로딩하기 |
개발환경 : window 7 32bit, Visual Studio 2010, OpenCV 2.4 |
OpenCV 에서 이미지 파일을 로딩하는 함수 cvLoadImage 는 raw 파일을
로딩하지 못한다. 그래서 따로 함수를 하나 만들었다.
파라미터로 전달받은 IplImage 객체에 raw 데이터 크기 만큼
For 문을 돌면서 값을 setting 하는 내용이다.
함수의 파라미터는 다음과 같다.
strInFileName : 다이얼로그에서 리턴받은 FilePath
nSizeX : 이미지의 넓이raw 데이터는 크기를 자동으로 알아올수 없기 때문에
넘겨줘야한다.
nSizeY : 이미지의 높이
nChannel : 1 이면 gray 를 나타내고 3이면 컬러를 의미한다.
outImage : IplImage 포인터를 넘겨준다. 함수를 호출하기 전에 cvCreateImage 를
통해 객체를 생성해준다.
호출하는 함수의 내용이다.
// OpenCV를 이용해서 RAW 로딩한다 void CTotalVisionDlg::OnBnClickedBtnOpencvraw() { CFileDialog fileDlg(TRUE, NULL, NULL, OFN_EXPLORER|OFN_HIDEREADONLY, "지원 영상 파일(*.raw) | *.raw||"); int iReturn = fileDlg.DoModal(); if(iReturn == IDOK) { // OpenCV 구현 int nSizeX = 256; int nSizeY = 256; m_pRawImage = cvCreateImage(cvSize(nSizeX,nSizeY),IPL_DEPTH_8U,1); cvZero(m_pRawImage); m_cImage.ReadRawImg(fileDlg.GetPathName(),nSizeX,nSizeY,1,m_pRawImage); Invalidate(TRUE); } }
Raw 데이터를 만들어 내는 함수 ReadRawImg 의 내용이다.
void CvvImage::ReadRawImg(CString strInFileName,int nSizeX,int nSizeY,int nChannel,IplImage *outImage) { FILE *fp; int i,j,k; char strFileName_c[256]; strcpy(strFileName_c, strInFileName.GetBuffer()); if(fopen_s(&fp,strFileName_c, "rb") ==0 ) { unsigned char *temp; temp=(unsigned char *)calloc(sizeof(unsigned char),nSizeX*nSizeY); for(i=0;i<nSizeX;i++) { fread(temp,nSizeX*nChannel,sizeof(unsigned char),fp); for(j=0;j<nSizeY;j++) { for(k=0;k<nChannel;k++) { outImage->imageData[i*nSizeX*nChannel + j*nChannel+k]=temp[j*nChannel+k]; } } } free(temp); } fclose(fp); }
'기타 언어 > C# & MFC' 카테고리의 다른 글
MFC 에서 OpenCV 의 cvGetQuadrangleSubPix 를 이용한 이미지 회전 (3) | 2013.05.02 |
---|---|
OpenCV 를 이용해 MFC 컨트롤(Static Control) 이미지 표현 하기 (0) | 2013.05.01 |
OpenCV 에서 IplImage 구조체 데이터 초기화 하기 (0) | 2013.04.29 |
Visual C++ 2010 fatal error LNK1123: failure during conversion to COFF 에러발생시 (8) | 2013.04.26 |
MFC 콘솔(Cmd) 에 로그 출력하기 (0) | 2013.04.13 |
Bitmap 파일 읽어서 SetDIBitsToDevice, StretchDIBits 이용해 표현하기 (1) | 2013.04.09 |
MFC VC2010 링크에러 fatal error LNK1104 (0) | 2013.04.05 |
CEdit 박스에 Enter 키를 눌렀을때 줄바꿈 적용 (0) | 2011.03.14 |