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
[56158] Re:화면캡처, 영상처리 질문 드립니다...
한빈짱 [hanbinjjang1] 1484 읽음    2009-02-13 21:19
RESULT 값이 CAPTURE 랑 같네요.

if(FrameCount==0) RESULT = CAPTURE; 이부분을
if(FrameCount==0) RESULT->Assign(CAPTURE); 이렇게

픽셀단위로 처리해서 꽤 느린;;


페루 님이 쓰신 글 :
: 안녕하세요?
:
: 전체 화면을 캡쳐해서 화면의 내용을 누적 평균시켜 표현 하려고 합니다...
:
: 캡쳐하는건 쓰레드를 이용해서 구현했는데요, 누적하는 부분이 계속 말썽이네요...
:
: 아래와 같이 FrameCount를 이용하여 RESULT에 계속 누적시켜가며 평균을 구했습니다만...
: 누적이 안되네요... ResultLine쪽에 문제가 있는건지...
: 현재화면 캡쳐는 잘 되는데, 이전화면(누적된)이 누적이 안되고 그냥 이전 화면만 나옵니다.
: 이전화면이 계속 리프레쉬 되는 듯 한....
:
:
:
: Graphics::TBitmap *CAPTURE;
: Graphics::TBitmap *RESULT;
: 
:         //전체화면 캡쳐
:         BitBlt(CAPTURE->Canvas->Handle, 0, 0, Screen->Width, Screen->Height, DC, 0, 0, SRCCOPY);
:           //첫번째 프레임
:         if(FrameCount==0) RESULT = CAPTURE;
: 
:         for(int row = 0; row < Screen->Height; row++) {
:                 CurrentLine = (Byte *)(CAPTURE->ScanLine[row]);
:                 if(FrameCount!=0)ResultLine = (Byte *)(RESULT->ScanLine[row]);
:                 for(int col = 0; col < Screen->Width; col++) {
:                         // 현재 프레임의 평균 그레이 계산
:                         PixelCount = col+(row*(Screen->Width));
:                         RAve = RAve + CurrentLine[col*3+0];
:                         GAve = GAve + CurrentLine[col*3+1];
:                         BAve = BAve + CurrentLine[col*3+2];
: 
:                         if(FrameCount!=0){
:                         // 평균프레임과 현재 프레임과 픽셀연산
:                         // (이전평균*카운트 + 현재프레임데이타) / 카운트+1
:                         // (이전평균 * 카운트)/카운트+1
:                         RtempPrev=ResultLine[col*3+0]*FrameCount/(FrameCount+1);
:                         GtempPrev=ResultLine[col*3+1]*FrameCount/(FrameCount+1);
:                         BtempPrev=ResultLine[col*3+2]*FrameCount/(FrameCount+1);
: 
:                         // 현재프레임/카운트+1
:                         RtempCurr=CurrentLine[col*3+0]/(FrameCount+1);
:                         GtempCurr=CurrentLine[col*3+1]/(FrameCount+1);
:                         BtempCurr=CurrentLine[col*3+2]/(FrameCount+1);
: 
:                          // 위의 두 변수를 더함 = (이전평균*카운트 + 현재프레임데이타) / 카운트+1
:                         ResultLine[col*3+0] = (Byte)RtempPrev + (Byte)RtempCurr;
:                         ResultLine[col*3+1] = (Byte)GtempPrev + (Byte)GtempCurr;
:                         ResultLine[col*3+2] = (Byte)BtempPrev + (Byte)BtempCurr;
:                         }
:                 }
:         }
:         FrameCount++;
:         CAPTURE->SaveToFile("test_C.bmp");
:         RESULT->SaveToFile("test_R.bmp");
: 

+ -

관련 글 리스트
56033 화면캡처, 영상처리 질문 드립니다... 페루 1334 2009/02/06
56158     Re:화면캡처, 영상처리 질문 드립니다... 한빈짱 1484 2009/02/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.