음...
raw-data에는 보통 color정보만 들어가고
image의 크기 (width,height , pixcelformat ) 등의 정보가 없습니다.
위 정보를 알고 있다는 가정하에..
다음과 같은 함수를 이용하여 rawdata를 TBitmap으로 변환해주는 함수를 만들어 보았습니다.
8비트 rawdata에 width,height를 알고 있다는 가정하에..
다음함수를 이용하여 rawdata를 bitmap으로 변환해 받을 수 있습니다.
Graphics::TBitmap * __fastcall RawData8ToBitmap(char *buff,int wid,int hei)
{
Graphics::TBitmap *bmp=new Graphics::TBitmap;
bmp->PixelFormat=pf32bit;
bmp->Width=wid;
bmp->Height=hei;
int widstep=wid;
if(wid%4)widstep= wid+(4-wid%4);
unsigned char *p=(unsigned char *)bmp->ScanLine[bmp->Height-1];
for(int r=(hei-1);r >= 0 ;r--)
{
int wstep=r*widstep;
for(int c=0;c < wid;c++)
{
p[0]=buff[wstep+c];
p[1]=p[0];
p[2]=p[0];
p=p+4;
}
}
return bmp;
}
//----------------------------------------------------------------------------
참 그리고 카메라에서 수신하는 rawdata는 보통 위에서 부터 수신하는데...
bitmap은 맨 아랫쪽이 파일에 먼저 기록되지요..
테스트는 못해봤어요...
그럼..
mjp 님이 쓰신 글 :
: 얼마전에 질문을 올렸었는데 답변을 보니 제가 질문을 애매하게 한듯 해서 다시 질문합니다.
:
: 저는 이미지 프로세싱을 배우고 있는 학생인데요,
:
: MFC를 이용하여 이미지 프로세싱을 하고 있습니다.
:
: 제가 C++ 빌더를 좋아해서 빌더로 작업을 하고 싶은데요
:
: 문제는 파일을 불러들이고 form위에 출력하고 그것들을 처리하는 방법을 모르겠다는 것입니다 ㅠ
:
: 지금까지 이미지를 불러 들이고 출력하려면 Image1->Picture->LoadFromFile() 이런 방법을 사용했었는데요
:
: raw파일에는 헤더가 없어서 그런지 제대로 불러들여지지 않더군요
:
: 제가 파일의 가로, 세로 픽셀수를 안다는 가정하에(당연히 알아야 하겠지요 ^^)
:
: CDC *pDC
:
: pDC->SetPixel(x, y, RGB(...
:
: 같은 이런 MFC 함수들을 대체할 수 있는 VCL의 함수들을 알고 싶습니다.
:
: 그리고 출력된 영상의 각각의 픽셀에 접근하는 법도 알고 싶습니다.(지난번 답변자께서는 빠뜨리셨더라구요 ㅠ)