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
[40052] Re:빌더에서 영상처리 질문이요
김상구.패패루 [peperu] 912 읽음    2005-05-04 14:10
비슷하게는 하셨는데 효율은 좀 떨어지게 만드셨네요
우선 Bitmap에 대한 도움말을 꼼꼼히 읽어보시는게 필요할 듯 합니다.

각 스캔라인은 ScanLine[]으로 접근하시면 되고 배열로 복사 혹은 배열로부터 복사를 할 때는 ::CopyMemory 등으로 복사하시는게 효율적입니다. 물론 복사해야 할 양은 PixelFormat과 연관이 있죠. 예를 들어 pf32bit인 경우엔 Widthx4를 해 주셔야죠. pf8bit인 경우 Width와 동일할테구요.

그리고... 참고로 하나 더 힌트를 드린다면... 영상정보는 데이터 자체가 클 뿐만 아니라 영상처리는 속도와의 싸움이기 때문에 배열로 복사하지 않고 직접 처리하는 방법을 쓰는 것이 좋습니다.


초보 님이 쓰신 글 :
: 빌더로 영상처리를 시작하는 학생입니다.
: 근데 처음부터 막히네요~
:
: CLX 에서 작업을 하고 있습니다.
: 다음 절차에 의해 영상을 얻고 뿌리고 있습니다.
:
: 1. Qgraphics::TBitmap*gbitmap = new Qgraphics::TBitmap();
:
: 2. gbitmap->LoadFromFile(fileName.c_str());
:
: 3. PaintBox1->Canvas->Draw(0,0,gbitmap);
:
: 근데 영상처리를 하려고 보니까 gbitmap 형식이 맞지 않아서 1차나 2차 포인터 또는 2차배열로 데이터를
: 바꿔야 하는데 그게 잘 안되네요~
:
: <질문1>
:
: unsigned char *ptr;
:  for (int y = 0; y < gbitmap->Height; y++)
:     {
:       ptr = (unsigned char *)gbitmap->ScanLine[y];
:       for (int x = 0; x < gbitmap->Width; x++)
:         ptr[x] = (unsigned char)y;
:     }
:
: 이렇게 ptr 로 1차 포인터로 바꿨는데  이게 맞는지 알고 싶습니다.
: 그리고 이상하게 gbitmap을 Draw 하니까 제대로 안나옵니다.
: 제 생각에는 gbitmap 을 Draw 하는데는 아무 문제 없을 것 같은데 안되네요~
:
:
: <질문2>
:
: 배열이나 포인터로 바꿨다면 영상처리 후 다시 Draw 를 하기 위해 gbitmap 으로 바꿔야 하는데
: 그 방법을 모르겠습니다.
:
: 알려주세요~~~~~~

+ -

관련 글 리스트
40010 빌더에서 영상처리 질문이요 초보 787 2005/04/30
40052     Re:빌더에서 영상처리 질문이요 김상구.패패루 912 2005/05/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.