C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[40091] 영상처리는 Pixel 부터....
볼레롱 [bolero] 1194 읽음    2005-05-09 16:40
영상처리 님이 쓰신 글 :
: 1. Qgraphics::TBitmap*gbitmap = new Qgraphics::TBitmap();
:
: 2. gbitmap->LoadFromFile(fileName.c_str());
:
: <이부분에서 gbitmap 을 1차나 2차 배열 혹은 포인터로 바꾸고 다시 gbitmap으로 바꿔야 합니다...>
:
: 3. PaintBox1->Canvas->Draw(0,0,gbitmap);
:
:
: gbitmap 을 1차나 2차 배열 혹은 포인터로 바꾸고 다시 gbitmap 으로 바꾸는 방법을 알고 싶습니다...

안녕하세요.

Pixel에 대한 이해가 없으면 영상처리를 시작 하실 수가 없습니다.
BCB 라고 해서 Pixel의 개념이 달라지거나 포맷을 다르게 쓰지는 않거든요.

지난번에 질문하신 것으로 보았더니  pixel 에대한 처리가 없더군요.

아래에 참고 예제 올립니다.

아래 예제는  폼에  TImage 하나  올리고,   미리 이미지를 넣어둔 후에

이 이미지에서 데이타 가져다가  r,g,b 를  b,g,r 로 순서만 바꾼후에 다시 출력한 예제 입니다.

지난번에 질문하신 소스처럼  이미지를 로드하더라고 동일한 방식이 되겠지요.

수고하세요!

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    unsigned char *ptr;
    unsigned char r,g,b;
    int pixelbyte, offset, pixel;
    Graphics::TBitmap *newImage = new Graphics::TBitmap();

    if (Image1->Picture->Bitmap->PixelFormat == pf24bit)
    {
        pixelbyte = 3;
        offset = 0;
    }
    else if (Image1->Picture->Bitmap->PixelFormat == pf32bit)
    {
        pixelbyte = 4;
        offset = 1;
    }
    else
        return;

    newImage->Height = Image1->Picture->Bitmap->Height;
    newImage->Width = Image1->Picture->Bitmap->Width;

    for (int y = 0; y < Image1->Picture->Bitmap->Height; y++)
    {
        ptr = (unsigned char *)Image1->Picture->Bitmap->ScanLine[y];
        for (int x = 0; x < Image1->Picture->Bitmap->Width; x++)
        {
            r =  ptr[x*pixelbyte   + offset];
            g =  ptr[x*pixelbyte+1 + offset];
            b =  ptr[x*pixelbyte+2 + offset];

            pixel = ((int)b << 16) | ((int)g << 8) | r;
            newImage->Canvas->Pixels[x][y] = pixel;
        }
    }

    this->Canvas->Draw(0, 0, newImage);

    delete newImage;
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
40083 영상처리 질문이요 영상처리 790 2005/05/09
40091     영상처리는 Pixel 부터.... 볼레롱 1194 2005/05/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.