|
cc1232 님이 쓰신 글 :
: pImage에 있는 포맷이 YUV인 상태로 보입니다
: 그 포맷에다가 BMP헤더만 붙인다고 BMP가 되지는 않습니다
: YUV를 BMP RAW로 변환하시고, 헤더를 붙여야 할 것 같네요
:
: mister 님이 쓰신 글 :
: : 캡쳐보드에서 YUY2 이미지를 받아서 bmp 포멧으로 바꿔 쓰려 합니다.
: : 비트맵 파일로 바꾸면 화면이 깨지네요.
: :
: : 소스는 다음과 같습니다.
: : 무엇이 문제인지 알려주십시요;;
: : //////////////////////////////////////////////////////////////////////////////////////////////////
: : // 콜백 함수 내용 입니다.
: : BITMAPFILEHEADER bmfh;
: : BITMAPINFOHEADER bmih;
: :
: : ZeroMemory(&bmfh, sizeof(bmfh));
: : ZeroMemory(&bmih, sizeof(bmih));
: :
: : bmfh.bfType = 0x4d42; // 'BM'
: : bmfh.bfSize = (sizeof(BITMAPFILEHEADER) - 2) + sizeof(BITMAPINFOHEADER) +
: : (sizeX * sizeY * 2); //360x240
: : bmfh.bfReserved1 = 0;
: : bmfh.bfReserved2 = 0;
: :
: : bmfh.bfOffBits = (sizeof(BITMAPFILEHEADER) - 2) + sizeof(BITMAPINFOHEADER) ;
: :
: : bmih.biSize=sizeof(BITMAPINFOHEADER);
: : bmih.biWidth=sizeX;
: : bmih.biHeight=sizeY;
: : bmih.biPlanes=1;
: : bmih.biBitCount=16;
: : bmih.biCompression=0;
: : bmih.biSizeImage=sizeX*sizeY*2;
: : bmih.biXPelsPerMeter=0;
: : bmih.biYPelsPerMeter=0;
: : bmih.biClrUsed=0;
: : bmih.biClrImportant=0;
: :
: : TMemoryStream *pMemoryStream = new TMemoryStream();
: : pMemoryStream->WriteBuffer(&bmfh, sizeof(BITMAPFILEHEADER) - 2);
: : pMemoryStream->WriteBuffer(&bmih, sizeof(bmih));
: : //pImage 이미지 소스
: : pMemoryStream->WriteBuffer((BYTE*) pImage, bmih.biSizeImage);
: : pMemoryStream->Position = 0;
: : Image1->Picture->Bitmap->LoadFromStream(pMemoryStream);
: :
: : delete pMemoryStream;
아 BMP RAW란 것이 지금 YUV2를 RGB로 바꾸라는 것 인가요?
아님 이렇게 바뀐 포멧을 다시 RAW로 바꾸고 BMP로 바꾸라는 건가요??
또 아님 BMP RAW라는 포멧이 있나요?
|