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
[56033] 화면캡처, 영상처리 질문 드립니다...
페루 [] 1334 읽음    2009-02-06 13:11
안녕하세요?

전체 화면을 캡쳐해서 화면의 내용을 누적 평균시켜 표현 하려고 합니다...

캡쳐하는건 쓰레드를 이용해서 구현했는데요, 누적하는 부분이 계속 말썽이네요...

아래와 같이 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:화면캡처, 영상처리 질문 드립니다... 한빈짱 1485 2009/02/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.