1. <li id="3se62"></li>
      <th id="3se62"></th>

      <progress id="3se62"></progress>
         你好,歡迎來到電腦編程技巧與維護雜志社! 雜志社簡介廣告服務讀者反饋編程社區  
        合訂本訂閱
         
         
        您的位置:雜志經典 / 圖形圖象處理與游戲編程
        基于DirectShowLib的家庭視頻監控系統設計與實現(三)
         


        3
        視頻監控系統設計

        視頻監控系統主要應包括以下功能模塊:視頻源選擇、視頻圖像采集、監控視頻錄像、監控視頻抓圖等。視頻圖像采集主要依靠連接電腦的攝像頭來完成,通過控制視頻輸入設備的選擇,找到可用的視頻源,而后根據DirectShow的要求,進行連接,即可完成視頻源的選擇、圖像采集以及視頻預覽等功能。系統設計的框架如圖1所示。

         


        1 基于DirectShowLib的視頻監控系統結構

        視頻圖像的信息量是巨大的。對視頻圖像進行壓縮是必須的。視頻采用的壓縮標準有:

        . 靜止圖像壓縮技術:JPEG,M-JPEG。采用小波變換等技術,運用幀內處理技術。靜止圖像較清晰,但對連續運動圖像,文件占用的帶寬和硬盤都很大。

        . 運動圖像壓縮技術:MPEG-1,MPEG-2,H.263,MPEG-4。 

        DirectShow中有現成的已經實現的視頻圖像的壓縮算法,我們在進行視頻圖像處理的時候,直接選擇相應的可用的壓縮算法即可。其中的音頻采集也是一樣的道理,這里略。

        4視頻監控系統程序實現

        系統實現是在VS2008開發環境中進行的。首先,在VS2008中,選擇C#語言,建立一個解決方案,命名為FamilyCapture。然后,加載DirectShowLib-2008工程。該工程是從開源網站上下載。接著,建立主工程,命名為FamilyCaptureProject,封裝與DirectShowLib的接口函數到一個單獨的類文件中,如Capture.cs。整個解決方案在VS2008環境下的視圖如圖2所示。

         


        2 系統的解決方案物理視圖

        在系統的主窗體中,可以看到主界面,如圖3所示。從界面可以看出,系統主要包括抓圖和錄像兩個功能。

         


        3 系統的主界面

        抓圖功能是系統的一個可擴展的功能,從監控的目的來看,可以設置定時或者根據移動監測算法主動抓圖,這樣就可以很容易監測到監控區域的移動物體或對象。這里,僅給出抓圖的一般算法,如下:

        Bitmap bitmap = this.m_Capture.SnapeBitmap();

        if (bitmap != null)

         {

                            Image newImage = bitmap.GetThumbnailImage(320, 240, new Image.GetThumbnailImageAbort(IsTrue), IntPtr.Zero);

                            //創建圖像

                            Bitmap image = new Bitmap(newImage);

                            //獲取圖像的BitmapData對像

                            BitmapData data = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

                            this.pictureBox1.Image = newImage;// Image.FromHbitmap(bitmap.GetHbitmap());

                            image.Save(this.GetFilePath() + ".jpg", ImageFormat.Jpeg);

        }

        錄像功能是視頻監控系統的最基本的功能。其實現算法如下:

        try

                    {

                                    //選擇音頻的壓縮Filter

                        this.m_Capture.SetAudioCompressor("MPEG Layer-3");

                                    //選擇視頻的壓縮Filter

                        this.m_Capture.SetVideoCompressor("DivX ;-) MPEG-4 Low-Motion");

                        //選擇視頻源設備

        this.m_Capture.SetVideoInputDevice(this.cb_VideoInputDevice.SelectedItem.ToString());

                        //視頻預覽

        this.m_Capture.VideoPreview();

        //視頻捕獲、壓縮、輸出

                        this.m_Capture.RecordVideo(this.GetFilePath() + ".avi");

                        this.btnStop.Enabled = true;

                        this.btnRecord.Enabled = false;

                    }

                    catch (Exception exception)

                    {

                        MessageBox.Show(exception.Message);

                    }

        通過程序編譯、調試,最終的運行結果,如圖4所示。很明顯,系統運行后,自動進入到監控視頻的預覽狀態。在該界面上,點擊抓圖,會在程序所在目錄下輸出相應的圖像文件,并在窗口側邊顯示抓圖效果。如圖5所示。如果點擊錄像,系統會進入到錄像狀態,直至點擊停止,系統在程序所在目錄下輸入所錄制的視頻文件。當然,在實際應用中,我們可以設置錄制時間,或者設置錄像的存儲原則等,以更靈活地滿足視頻監控的需要。

         


        4 系統運行主界面

         


        5 系統抓圖后的運行效果圖

        5 結束語

        DirectShowLib的功能強大,家庭視頻監控系統僅使用了其中的一部分功能。如果要改進系統中的視頻壓縮算法,更好地滿足視頻監控的需要,可以在此基礎上展開研究,實現更好的視頻壓縮Filter,加載到系統中就可以了。

        基于DirectShowLib開發的這樣的家庭視頻監控系統,可以滿足一般家庭用戶的需要。方法簡單,實現起來也不難,通過普通的USB攝像頭,就可以在家中建立一個視頻監控系統。當然,這僅僅是一個原型系統,還有許多功能需要實現,以滿足更多用戶的需要,比如網絡監控、遠程監控、移動監測等功能,這就是下一步工作的研究方向。

          推薦精品文章

        ·2023年7月目錄
        ·2023年6月目錄 
        ·2023年5月目錄
        ·2023年4月目錄 
        ·2023年3月目錄 
        ·2023年2月目錄 
        ·2023年1月目錄 
        ·2022年12月目錄 
        ·2022年11月目錄 
        ·2022年10月目錄 
        ·2022年9月目錄 
        ·2022年8月目錄 
        ·2022年7月目錄 
        ·2022年6月目錄 

          聯系方式
        TEL:010-82561037
        Fax: 010-82561614
        QQ: 100164630
        Mail:gaojian@comprg.com.cn

          友情鏈接
         
        Copyright 2001-2010, www.1wcdp.top, All Rights Reserved
        京ICP備14022230號-1,電話/傳真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
        地址:北京市海淀區遠大路20號寶藍大廈E座704,郵編:100089 
        1. <li id="3se62"></li>
          <th id="3se62"></th>

          <progress id="3se62"></progress>
            操美女小骚逼