在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux 下基于ARM920T 的USB 攝像頭圖像采集

            Linux 下基于ARM920T 的USB 攝像頭圖像采集

            作者: 時(shí)間:2012-05-21 來(lái)源:網(wǎng)絡(luò) 收藏

            3.1圖像數(shù)據(jù)的采集過(guò)程:

            第一步:要打開(kāi)攝像頭設(shè)備,而在下可以通過(guò)系統(tǒng)的設(shè)備文件來(lái)訪問(wèn)設(shè)備,在前面我們創(chuàng)建并建立了攝像頭的設(shè)備文件,所以文件描述符(dev)可以如下方法獲?。?P> while (max_try) {

            dev = open (device, O_RDWR);

            if (dev == -1) {

            if (!--max_try) {

            fprintf (stderr, "Can't open device %sn", device);

            return (1);} /*max_try為試圖打開(kāi)設(shè)備的最多次數(shù)*/

            sleep (1);

            } else { break; }}

            第二步:進(jìn)行訪問(wèn)攝像頭設(shè)備的狀態(tài)信息。

            首先我們可以在kernel的源代碼中找到頭文件videodev.h,這個(gè)頭文件定義了我們要編寫(xiě)的應(yīng)用程序的所有數(shù)據(jù)結(jié)構(gòu)和函數(shù)。當(dāng)然我們先要獲得攝像頭的信息,可以通過(guò)頭文件中的video_capability結(jié)構(gòu)來(lái)了解攝像頭的性能。其函數(shù)接口是int v4l_check_size (int fd, int *width, int *height),讀出其中的單元可按如下方法,宏VIDIOCGCAP定義為 _IOR('v',1,struct video_capability)。

            struct video_capability vid_caps;

            if (ioctl (fd, VIDIOCGCAP, vid_caps) == -1) {

            perror ("ioctl (VIDIOCGCAP)"); return -1;}

            然后通過(guò)訪問(wèn)結(jié)構(gòu)體vid_caps就可以讀出攝像頭可拍攝的圖片類(lèi)型、圖片的最大最小高度和寬度。

            第三步:通過(guò)控制攝像頭來(lái)采集圖象數(shù)據(jù)。

            實(shí)現(xiàn)函數(shù)為image = get_image (dev, width, height, palette, size),通過(guò)該函數(shù)可以將設(shè)備文件中的圖象數(shù)據(jù)的信息讀出來(lái),該函數(shù)的返回值image為圖片要存儲(chǔ)的格式,例如png、jpeg等。但這樣必須首先申請(qǐng)一塊足夠大的內(nèi)存空間,我們是這樣完成的:

            map = malloc (width * height * bytes);

            len = read (dev, map, width * height * bytes);

            if (len = 0) { free (map); return (NULL); }

            這樣采集到的圖像數(shù)據(jù)就會(huì)先存到所分配到的內(nèi)存空間中,然后進(jìn)行下一步的象素和圖片格式存儲(chǔ)處理。

            第四步:按照預(yù)定的象素值和圖片格式來(lái)存儲(chǔ)圖像。

            在驅(qū)動(dòng)程序向應(yīng)用程序傳遞圖像數(shù)據(jù)是一個(gè)拷貝過(guò)程,所以應(yīng)用程序在采集圖片數(shù)據(jù)時(shí),先將驅(qū)動(dòng)程序中圖片緩沖區(qū)中的數(shù)據(jù)拷貝到應(yīng)用程序中,然后再控制和處理圖片數(shù)據(jù)。

            if (palette == VIDEO_PALETTE_YUV420P) {

            convmap = malloc ( width * height * bytes );

            v4l_yuv420p2rgb (convmap, map, width, height, bytes * 8);

            memcpy (map, convmap, (size_t) width * height * bytes);

            free (convmap); }

            這就是拷貝的過(guò)程,memcpy()為拷貝函數(shù),v4l_yuv420p2rgb()函數(shù)用來(lái)將原生圖片轉(zhuǎn)換為RGB格式的圖像信息。然后通過(guò)前邊image的返回值來(lái)分別調(diào)用函數(shù)put_image_png,put_image_jpeg來(lái)生成相應(yīng)格式的圖像信息。

            3.2 通過(guò)QT編譯的圖片查看器查看攝像頭采集的圖像。

            QT目前是在嵌入式領(lǐng)域中比較流行的圖形開(kāi)發(fā)工具,在我們的文件系統(tǒng)中,采用了基于QT的圖形界面Qtopia,以下是實(shí)現(xiàn)調(diào)用圖像信息的QT語(yǔ)句。第一句表示將圖片的路徑以及圖片的名字傳給pm1,然后通過(guò)Qlabel類(lèi)的pl傳出圖片給圖片查看器,從而實(shí)現(xiàn)了圖像信息的顯示。

            QPixmap pm1("picture_path/picture_name");

            Qlabel p1;

            p1—>SetPixmap(pm1);

            在采集的圖像數(shù)據(jù)中,可以自定義所存儲(chǔ)的圖片格式,大小及其像素,方便迅速,而Qtopia是基于QT的比較成熟的嵌入式圖形界面,利用其來(lái)顯示我們所采集的圖像數(shù)據(jù)效果良好。

            4、結(jié)束語(yǔ)

            本文詳細(xì)介紹了基于ARM920T的嵌入式下的的硬件、軟件構(gòu)建過(guò)程,可以靈活應(yīng)用于基于嵌入式的各種電子產(chǎn)品中。由于所采用的軟件全部是開(kāi)放源碼而且免費(fèi)獲得,所以對(duì)于需要便攜好而又要有較高的數(shù)據(jù)處理能力且成本要求嚴(yán)格的方面尤其適合。

            本文作者創(chuàng)新點(diǎn):通用串行總線是一種非常實(shí)用的通信接口,其應(yīng)用日益廣泛,而Linux+ARM9下USB設(shè)備的應(yīng)用也逐漸完善;并且采用了具有永久性存儲(chǔ)功能的Yaffs文件系統(tǒng),為客戶(hù)進(jìn)行實(shí)時(shí)處理圖像提供了方便;同時(shí)使用QT編譯的界面使圖像數(shù)據(jù)的采集更加人性化,這幾方面的結(jié)合使其必有很廣的市場(chǎng)前景。

            參考文獻(xiàn):

            [1] SAMSUNG主頁(yè):http://www.samsungsemi.com/

            [2]《基于ARM-Linux 嵌入式系統(tǒng)引導(dǎo)程序的設(shè)計(jì)》劉晶晶《微計(jì)算機(jī)信息》2006第2-2期

            [3]《構(gòu)建嵌入式Linux系統(tǒng)》,Karim Yaghmour著,中國(guó)電力出版社

            [4]《Linux設(shè)備驅(qū)動(dòng)程序(第三版),Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman著,魏永明等譯,中國(guó)電力出版社

            linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: USB攝像頭 Linux 圖像采集

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉