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
[45335] 캠에서의 callback함수
아피 [arioner] 2127 읽음    2006-06-18 03:17
다음은 VC++에서 콜백함수를 불러와 영상처리를 한함수입니다.(질문은 뒤쪽에...)

//콜백함수
LRESULT CALLBACK capCallbackOnFrame(HWND HWnd,LPVIDEOHDR lpVHdr)
{
    BYTE pixel;
    int i,j,index,counter=0;

    if(pImageBuffer == NULL) pImageBuffer=(LPBYTE)new BYTE[BmInfo.bmiHeader.biHeight*BmInfo.bmiHeader.biWidth];

    for(i=0;i<BmInfo.bmiHeader.biHeight*BmInfo.bmiHeader.biWidth;i++)
    {
        pixel=(*(lpVHdr->lpData+(i*3))+*(lpVHdr->lpData+(i*3)+1)+*(lpVHdr->lpData+(i*3)+2))/3;
        if(pixel>200) *(pImageBuffer+i) = 255;
        else *(pImageBuffer+i) = 0;
    }

    int xCenter=0,yCenter=0;

    for(i=0;i<BmInfo.bmiHeader.biHeight;i++)
    {
        index = i*BmInfo.bmiHeader.biWidth;
        for(j=0;j<BmInfo.bmiHeader.biWidth;j++)
        {
            if(*(pImageBuffer+index+j)==255)
            {
                xCenter+=i;
                yCenter+=j;
                counter++;
            }
        }
    }

    xCenter=(int)((float)xCenter/(float)counter);
    yCenter=(int)((float)yCenter/(float)counter);

    for(i=xCenter-15;i<=xCenter+15;i++)
    {
        if(i<0 || i>=BmInfo.bmiHeader.biHeight) continue;
        index = i*BmInfo.bmiHeader.biWidth;
        *(lpVHdr->lpData+3*(index+yCenter))=0;
        *(lpVHdr->lpData+3*(index+yCenter)+1)=0;
        *(lpVHdr->lpData+3*(index+yCenter)+2)=255;
    }
    index=xCenter*BmInfo.bmiHeader.biWidth;
    for(j=yCenter-15;j<=yCenter+15;j++)
    {
        if(j<0 || j>=BmInfo.bmiHeader.biWidth) continue;
        *(lpVHdr->lpData+3*(index+j))=0;
        *(lpVHdr->lpData+3*(index+j)+1)=0;
        *(lpVHdr->lpData+3*(index+j)+2)=255;       
    }

    CString strTitle;
    strTitle.Format("Binary Tracker(%d,%d)",xCenter,yCenter);
    AfxGetMainWnd()->SetWindowText(strTitle);

    return (LRESULT)TRUE;
}

//////////////////////////////////////////////////////////

//매 frame이 캡처될때마다 호출될 callback function지정(VC++에서...)
    if(capSetCallbackOnFrame(m_hWndCap,capCallbackOnFrame)==FALSE) return FALSE;
※m_hWndCap는 Capture Window의 핸들입니다.


//질문입니다.
위 형식을 보시면 매 플레임마다 capCallbackOnFrame함수가 실행되게 되어 영상을 처리하게 되는데...
BCB에서 저형식을 그대로 사용하면 될것 같아서 사용했는데 안되는군요.
에러의 이유가 제 생각에는 callback함수를 저런식으로 BCB에서는 저렇게 사용하는게 아닌것 같은데...
사용하는 방법을 자세히좀 설명해주세요.

+ -

관련 글 리스트
45335 캠에서의 callback함수 아피 2127 2006/06/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.