亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于QNX的圖像采集系統(tǒng)的設(shè)計(jì)與軟件實(shí)現(xiàn)

        2016-05-14 07:45:16王昱霖王文華
        電子技術(shù)與軟件工程 2016年6期
        關(guān)鍵詞:圖像采集

        王昱霖 王文華

        摘 要QNX系統(tǒng)是面向嵌入式應(yīng)用的高性能實(shí)時(shí)操作系統(tǒng),基于QNX的圖像采集系統(tǒng)可用于對(duì)穩(wěn)定性和可靠性要求較高的工業(yè)及其他特殊環(huán)境中。本文簡(jiǎn)要分析了QNX視頻采集系統(tǒng)的驅(qū)動(dòng)原理,定制了用于視頻采集的QNX嵌入式系統(tǒng),并利用C++語(yǔ)言編寫(xiě)了基于工業(yè)攝像機(jī)抓取圖像的上層應(yīng)用程序,通過(guò)抓取一楨圖像的實(shí)驗(yàn),驗(yàn)證了該設(shè)計(jì)方法的可行性。

        【關(guān)鍵詞】QNX 圖像采集 系統(tǒng)定制 驅(qū)動(dòng)開(kāi)發(fā)

        1 前沿

        隨著工控自動(dòng)化技術(shù)的發(fā)展,工業(yè)領(lǐng)域中的大數(shù)據(jù)量視頻數(shù)據(jù)采集對(duì)實(shí)時(shí)性和穩(wěn)定性的要求越來(lái)越高。QNX Neutrino實(shí)時(shí)操作系統(tǒng)是一種功能全面、運(yùn)行穩(wěn)健的操作系統(tǒng),其真正的微內(nèi)核設(shè)計(jì)和模塊化架構(gòu)可幫助使用者以極低的成本創(chuàng)建高度優(yōu)化和超可靠的系統(tǒng)?;赒NX操作系統(tǒng)進(jìn)行視頻數(shù)據(jù)采集可有效滿(mǎn)足工業(yè)環(huán)境對(duì)實(shí)時(shí)性和穩(wěn)定性的要求。但QNX作為一款專(zhuān)用的嵌入式操作系統(tǒng)也存在開(kāi)發(fā)難度大,開(kāi)發(fā)周期長(zhǎng)等問(wèn)題,如何能夠快速開(kāi)發(fā)基于QNX的工業(yè)攝像機(jī)使用的驅(qū)動(dòng)程序模塊推廣應(yīng)用QNX系統(tǒng)的重要基礎(chǔ)。

        2 QNX系統(tǒng)介紹

        QNX是一個(gè)分布式、微內(nèi)核、搶占式、多用戶(hù)、多任務(wù)、可嵌入式的實(shí)時(shí)操作系統(tǒng)。被廣泛應(yīng)用到電信、航天儀器、工業(yè)自動(dòng)化等方面[1]。QNX有獨(dú)特的微內(nèi)核和進(jìn)程管理單元,以及基于消息傳遞的進(jìn)程通信機(jī)制,同時(shí)采用內(nèi)核調(diào)度的搶占式優(yōu)先級(jí)進(jìn)程管理,使得系統(tǒng)保證在任務(wù)時(shí)間內(nèi)完成對(duì)上下文的快速切換,具有極好的實(shí)時(shí)性。在QNX Neutrino 環(huán)境下,所有驅(qū)動(dòng)程序、應(yīng)用程序、協(xié)議棧和文件系統(tǒng)都在內(nèi)核以外的內(nèi)存受保護(hù)的用戶(hù)空間內(nèi)安全運(yùn)行。QNX操作系統(tǒng)符合POSIX基本標(biāo)準(zhǔn)和實(shí)時(shí)標(biāo)準(zhǔn),使其應(yīng)用可以方便的進(jìn)行移植。QNX的微內(nèi)核僅提供進(jìn)程通信、進(jìn)程調(diào)度、中斷處理和底層網(wǎng)絡(luò)通信等4中服務(wù)。

        QNX設(shè)備驅(qū)動(dòng)與其他操作系統(tǒng)的設(shè)備驅(qū)動(dòng)有所不同,其驅(qū)動(dòng)程序與內(nèi)核運(yùn)行在不同的地址空間中,即設(shè)備驅(qū)動(dòng)無(wú)需編譯到內(nèi)核中去,而是由QNX特有的資源管理器管理,資源管理器負(fù)責(zé)給不同類(lèi)型的設(shè)備提供接口。同時(shí),不同的設(shè)備驅(qū)動(dòng)還可以通過(guò)消息傳遞的方式,經(jīng)過(guò)進(jìn)程管理器,將消息傳遞給其他設(shè)備驅(qū)動(dòng)。QNX的網(wǎng)絡(luò)驅(qū)動(dòng)核心是Network Manager, 應(yīng)用程序調(diào)用函數(shù)庫(kù)中的函數(shù),通過(guò)消息傳遞機(jī)制訪問(wèn)資源管理器,并通過(guò)TCP/IP協(xié)議調(diào)用資源管理器中的函數(shù)與驅(qū)動(dòng)程序進(jìn)行連接。網(wǎng)絡(luò)驅(qū)動(dòng)模塊的原理圖如圖1所示。

        3 QNX系統(tǒng)定制

        開(kāi)發(fā)QNX驅(qū)動(dòng)程序前首先需要定制系統(tǒng),其過(guò)程為:構(gòu)建Buildfile->編譯Buildfile生成系統(tǒng)映像文件->啟動(dòng)目標(biāo)系統(tǒng)->嵌入式系統(tǒng)軟件設(shè)計(jì)。

        其中最重要的就是構(gòu)建Buildfile。在通常的嵌入式系統(tǒng)中,都需要一個(gè)可啟動(dòng)的操作系統(tǒng)映像文件(OS Image)。構(gòu)建Buildfile的過(guò)程就是配置操作系統(tǒng)映像的過(guò)程。Buildfile由三部分組成,分別為bootstrap script(啟動(dòng)引導(dǎo)腳本)、startup script(啟動(dòng)腳本)、file list(文件列表)。

        首先構(gòu)建Buildfile。bootstrap script如下所示,

        [virtual=x86,bIOS+compress].bootstrap = {

        Start-bIOS –Ntarget

        PATH=/proc/boot:/bin:/sbin:/usr/bin:/usr/sbin:/usr/photon/bin

        LD_LIBRARY_PATH=/proc/boot:/dev/shmem:/lib:/lib/dll:/usr/lib:/usr/lib/dll procnto}

        其中“virtual” 表明該Buildfile將構(gòu)造一個(gè)與啟動(dòng)時(shí)產(chǎn)生的虛擬地址空間相對(duì)應(yīng)的啟動(dòng)映象。關(guān)鍵詞“x86,bIOS” 則分別指處理器(x86)和機(jī)器類(lèi)型(通過(guò)bIOS啟動(dòng))。而“+compress”使得映象文件被壓縮,以產(chǎn)生更小的映象文件。startup-bIOS是運(yùn)行于具有BIOS的PC兼容系統(tǒng)的可執(zhí)行程序,主要負(fù)責(zé)利用BIOS檢測(cè)PC硬件資源。啟動(dòng)腳本是在系統(tǒng)啟動(dòng)后自動(dòng)執(zhí)行的一系列命令列表,可在此對(duì)系統(tǒng)進(jìn)行初步配置,如網(wǎng)絡(luò)配置,顯卡設(shè)置等操作。

        將制作好的Buildfile導(dǎo)入到IDE中,編譯生成MyCamera.ifs文件。在開(kāi)發(fā)機(jī)上將MyCamera.ifs復(fù)制到目標(biāo)機(jī)的/net/Target/.boot中,這樣就可以實(shí)現(xiàn)目標(biāo)機(jī)自動(dòng)啟動(dòng)QNX系統(tǒng),系統(tǒng)定制完成。

        4 軟件實(shí)現(xiàn)

        4.1 安裝API函數(shù)庫(kù)

        本系統(tǒng)采用了德國(guó)basler pylon piA2400-17gc攝像頭,分辨率為2454*2056,幀速率可以達(dá)到17fps,采用千兆網(wǎng)卡接口,位深度為12bits。視頻采集卡采用intel PRO1000網(wǎng)卡。使用該攝像頭需要在目標(biāo)機(jī)上安裝API函數(shù)庫(kù)和設(shè)置環(huán)境變量,內(nèi)容如下所示:

        sudo md /opt/pylon

        sudo tar -C /opt/pylon -xzf pylon-bininst-32.tar.gz

        export PYLON_ROOT=/opt/pylon

        export GENICAM_ROOT_V2_1=${PYLON_ROOT}

        export LD_LIBRARY_PATH=${PYLON_ROOT}/lib:${GENICAM_ROOT_V2_1}/bin/Linux32_i86:$LD_LIBRARY_PATH

        mkdir -p $HOME/genicam_xml_cache export GENICAM_CACHE_V2_1=$HOME/genicam_xml_cac-he

        4.2 軟件編寫(xiě)

        利用C++語(yǔ)言編寫(xiě)上層應(yīng)用程序?qū)崿F(xiàn)抓取一幀數(shù)據(jù)并從控制臺(tái)顯示幀數(shù)據(jù)信息。軟件流程圖如圖2所示。

        抓取一幀數(shù)據(jù)主要程序代碼如下,

        #include

        #include

        #include

        void pressEnterToExit()

        int main(int argc, char* argv[])

        {

        Pylon::PylonAutoInitTerm autoInitTerm;

        CTlFactory&TlFactory=CTlFactory::GetInstance();

        Camera_t::DeviceClass()

        ITransportLayer*pTl=TlFactory.CreateTl(Camera_t::DeviceClass());

        Camera_t Camera(pTl->CreateDevice(devices[0]));

        Camera.Open();

        Camera_t::StreamGrabber_t StreamGrabber(Camera.GetStreamGrabber(0)); StreamGrabber.Open(); Camera.PixelFormat.SetValue(PixelFormat_Mono8);

        Camera.OffsetX.SetValue(0);

        Camera.OffsetY.SetValue(0); Camera.Width.SetValue(Camera.Width.GetMax()); Camera.Height.SetValue(Camera.Height.GetMax());

        Camera.AcquisitionMode.SetValue(AcquisitionMode_SingleFrame);

        Camera.ExposureMode.SetValue(ExposureMode_Timed);

        Camera.ExposureTimeRaw.SetValue(100);

        const size_t ImageSize = (size_t)(Camera.PayloadSize.GetValue());

        uint8_t * const pBuffer = new uint8_t[ ImageSize ]; StreamGrabber.MaxBufferSize.SetValue(ImageSize);

        StreamGrabber.MaxNumBuffer.SetValue(1);

        StreamGrabber.PrepareGrab();

        const StreamBufferHandle hBuffer =

        StreamGrabber.RegisterBuffer(pBuffer, ImageSize);

        StreamGrabber.QueueBuffer(hBuffer, NULL);

        StreamGrabber.DeregisterBuffer(hBuffer);

        StreamGrabber.FinishGrab();

        StreamGrabber.Close();

        Camera.Close();

        delete[] pBuffer;

        pressEnterToExit();

        return 0;

        }

        4.3 實(shí)驗(yàn)驗(yàn)證

        代碼編寫(xiě)完成后,啟動(dòng)目標(biāo)機(jī),從啟動(dòng)信息中可以看到IP信息,說(shuō)明網(wǎng)卡驅(qū)動(dòng)加載完成,通過(guò)QNX開(kāi)發(fā)環(huán)境IDE編譯和仿真,由圖3所示,抓取的圖像幀信息顯示在控制臺(tái)窗口中,說(shuō)明該系統(tǒng)可正常進(jìn)行圖像采集。

        5 結(jié)語(yǔ)

        本文簡(jiǎn)要分析了QNX視頻采集系統(tǒng)的驅(qū)動(dòng)原理,定制了視頻采集系統(tǒng)的QNX嵌入式系統(tǒng),利用C++語(yǔ)言編寫(xiě)了基于工業(yè)攝像機(jī)抓取圖像的上層應(yīng)用程序,通過(guò)抓取一楨圖像的實(shí)驗(yàn),驗(yàn)證了該方法的可行性,為下一步開(kāi)發(fā)基于QNX的圖像處理算法奠定了基礎(chǔ)。

        參考文獻(xiàn)

        [1]趙磊.QNX實(shí)時(shí)操作系統(tǒng)及其應(yīng)用分析[J].軟件導(dǎo)刊,2009(5):22-24.

        [2]QNX Software Systems Ltd.System Architecture[DB/OL].http://www.qnx.org,2008.

        [3]QNX Neutrino Real-time Operating System: Building Embedded Systems [DB/OL],2004.

        [4]王斑,苗克堅(jiān).QNX驅(qū)動(dòng)程序的編寫(xiě)[J].測(cè)控技術(shù),2006,25(6):54-56.

        [5]姜廣山,祖家奎.基于QNX的PC104總線設(shè)備驅(qū)動(dòng)模塊的開(kāi)發(fā)[J].測(cè)控技術(shù),2010,23(12):1-4.

        作者簡(jiǎn)介

        王昱霖(1993-),男,碩士研究生學(xué)歷?,F(xiàn)在供職于山東科技大學(xué)機(jī)器人研究中心。研究方向?yàn)闄C(jī)器人學(xué)、智能控制。

        作者單位

        山東科技大學(xué)機(jī)器人研究中心 山東省青島市 266590

        猜你喜歡
        圖像采集
        基于WSN的分布式太陽(yáng)能殺蟲(chóng)燈遠(yuǎn)程控制系統(tǒng)研究與設(shè)計(jì)
        車(chē)牌識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        機(jī)器視覺(jué)技術(shù)的發(fā)展及其應(yīng)用
        科技視界(2016年25期)2016-11-25 19:53:52
        視覺(jué)拉線檢測(cè)器的設(shè)計(jì)與實(shí)現(xiàn)
        科技視界(2016年25期)2016-11-25 09:27:34
        基于FPGA+DSP實(shí)時(shí)圖像采集處理系統(tǒng)設(shè)計(jì)
        基于ARM—Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)
        視覺(jué)導(dǎo)航系統(tǒng)中圖像采集及處理技術(shù)綜述
        科技視界(2016年24期)2016-10-11 12:57:04
        基于ARM處理器的指紋識(shí)別技術(shù)研究
        基于LabVIEW和USB攝像頭的圖像采集與處理
        交通肇事車(chē)輛快速視覺(jué)定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        亚洲av之男人的天堂网站| 日本少妇熟女一区二区| 插插射啊爱视频日a级| 国产麻传媒精品国产av| 国产人成午夜免电影观看 | 久久久婷婷综合亚洲av| 天天射综合网天天插天天干| 日本艳妓bbw高潮一19| 人妻在卧室被老板疯狂进入国产 | 亚洲精品国产亚洲av| 欧美多人片高潮野外做片黑人 | 樱桃视频影院在线播放| 日日摸夜夜添夜夜添无码免费视频| 久热这里只有精品视频6| 一区一级三级在线观看| 亚洲毛片av一区二区三区| 亚洲国产av一区二区三区精品| 欧美成人在线视频| 麻豆精品网站国产乱子伦| 福利视频自拍偷拍视频| 亚洲精品宾馆在线精品酒店| 骚小妹影院| 在线丝袜欧美日韩制服| 少妇人妻无一区二区三区 | 亚洲日韩AV秘 无码一区二区 | 女优av性天堂网男人天堂| 日韩日韩日韩日韩日韩| 中文字幕 人妻熟女| 日韩成人精品一区二区三区| 产美女被爽到高潮免费a| 亚洲av无码av制服另类专区| 亚洲 无码 制服 丝袜 自拍| 偷拍视频这里只有精品| 欧美变态另类刺激| 亚洲人成影院在线无码观看| 国内偷拍第一视频第一视频区| 久久99精品久久久久久琪琪| 亚洲精品人成无码中文毛片| 亚洲AV秘 无码一区二区在线| 国产精品亚洲二区在线看| 亚洲av无码精品色午夜在线观看|