• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用VC++ 6.0實現視頻捕捉

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    劉力天 方 蘭 本文結合實例談談在應用Vedio for Windows 進行視頻捕捉編程方面的一些經驗,希望能對大家有所幫助。 一、Vedio for Windows 簡介 Vedio for Windows 是WIN32 SDK 中多媒體編程SDK 的視頻 開發 工具。在微軟的Visual C ++中提供了Vedio for Wi
    劉力天 方 蘭

      本文結合實例談談在應用Vedio for Windows 進行視頻捕捉編程方面的一些經驗,希望能對大家有所幫助。

      一、Vedio for Windows 簡介

      Vedio for Windows 是WIN32 SDK 中多媒體編程SDK 的視頻開發工具。在微軟的Visual C ++中提供了Vedio for Windows 的頭文件vfw.h 和庫文件vfw32.lib。表1 列出了VFW 中視頻捕捉編程常用的一些VFW 函數和宏。
    http://www.kjueaiud.com/uploads/2007/07/1_200707042008523.jpg (51700 字節)
      二、用VC ++6.0 實現視頻捕捉的編程實例

      筆者前不久剛剛用VC ++6.0 完成了一套光學自動報靶系統的開發,該系統的前端用到了視頻捕捉。下面結合這部分實例,說明對視頻捕捉編程的具體實現方法。
      1、用Visual C ++的AppWizard 生成一個基于對話框的應用程序,并在SrdAfx.h 中加入以下內容:
           ?。nclude < vfw.h >
           ?。ragma comment(lib,"vfw32.lib")
      2、修改對話框資源,添加靜態控制IDC_VIDEO 和按鈕“捕捉”、“停止”、“設置格式”、“設置圖像源”、“設置壓縮”、“單幀捕獲”、“定幀”、“退出”。
      3、在對話框的頭文件中加入以下說明。
         HWND m_hCapWnd;// 預示窗口
          BOOL m_bInit;// 捕捉器初始化
       CAPDRIVERCAPS m_CapDrvCap;// CAP ?
    DRIVERCAPS 結構,定義驅動器性能
       CAPSTATUS m_CapStatus;// CAPSTATUS 結構,
                   定義捕捉窗口當前狀態
        CAPTUREPARMS m_Parms;
       // CAPTURE PARMS 結構,定義捕捉參數
       CString m_CapFileName;// 捕捉文件名稱
      4、在對話框類的OnInitDialog() 函數中加入捕捉器初始化以及連接驅動器。
     m_bInit=FALSE;
     CWnd *pWnd=AfxGetMainWnd() ->GetDlgItem
       (IDC_VIDEO); // 得到預示窗口指針
     CRect rect;
     pWnd ->GetWindowRect( &rect); // 得到窗口大小
     m_hCapWnd=capCreateCaptureWindow
      ((LPTSTR)TEXT("視頻捕捉測試程序"),
      WS_CHILD|WS_VISIBLE|WS_EX_CLIENTEDGE|
    WS_EX_DLGMODALFRAME,0,0,rect.Width(),rect.Width(),
    pWnd ->GetSafeHwnd(),0); // 設置預示窗口
          ASSERT(m_hCapWnd);
          if(capDriverConnect(m_hCapWnd,0)){
          // 連接第0 號驅動器
         m_bInit=TRUE;
                // 得到驅動器的性能
          capDriverGetCaps(m_hCapWnd,sizeof
             (CAPDRIVE  RCAPS), &m_CapDrvCap);
         if(m_CapDrvCap.fCaptureInitialized){
             // 如果初始化成功
    capGetStatus(m_hCapWnd, &m_CapStatus,sizeof
    (m_CapStatus)); // 得到驅動器狀態
    capPreviewRate(m_hCapWnd,30); // 設置預示幀頻
    capPreview(m_hCapWnd,TRUE); // 設置預示方式
     }
     else{// 初始化未成功
     AfxMessageBox("視頻捕捉卡初始化失敗!");
     AfxGetMainWnd() ->PostMessage
    (WM_CLOSE);
        }
          }
    else{// 未能連接到驅動器
           AfxMessageBox
         ("與視頻捕捉卡連接失敗!");
           AfxGetMainWnd() ->PostMessage
                 (WM_CLOSE);
          }
    m_CapFileName="c:\\Capture.avi";// 設置捕獲文件
       capFileSetCaptureFile(m_hCapWnd,m_CapFile
    Name.GetBuffer(255));
      5、在對話框類中加入響應“設置格式”消息的函數OnFormat()。
      capDlgVideoFormat(m_hCapWnd);
      // 設置格式對話框
      6、在對話框類中加入響應“設置圖像源”消息的函數OnSource()。
          capDlgVideoSource(m_hCapWnd);
          // 設置圖像源對話框
      7、在對話框類中加入響應“設置壓縮”消息的函數OnCompress()。
          capDlgVideoCompression(m_hCapWnd);
         // 設置壓縮對話框
      8、在對話框類中加入響應“捕捉”消息的函數OnCapture()。
          capCaptureGetSetup(m_hCapWnd,
         &m_Parms,sizeof(m_Parms));// 得到設置參數
          if(capCaptureSetSetup(m_hCapWnd,
         &m_Parms,sizeof(m_Parms))==TRUE){
                BOOL suc=TRUE;
        suc=capCaptureSequence(m_hCapWnd); // 捕捉到文件
                return suc};
    else
        return FALSE;
      9、在對話框類中加入響應“定幀”消息的函數OnFreezed()。
           capPreview(m_hCapWnd,FALSE);// 定幀
      10、在對話框類中加入響應“單幀捕獲”消息的函數OnImage()。
          capGrabFrameNoStop(m_hCapWnd);
          // 截獲當前圖像
          capEditCopy(m_hCapWnd);
           // 將圖像拷貝到剪貼板
      11、在對話框類中加入響應“停止”消息的函數OnStop()。
          capCaptureStop(m_hCapWnd);// 停止捕捉
      12、退出前斷開捕捉器與驅動器的連接。
          capDriverDisconnect(m_hCapWnd);  

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>