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

        ?

        基于Linux內(nèi)核framebuffer的圖像采集與顯示系統(tǒng)設(shè)計(jì)

        2018-03-27 06:29:32,
        關(guān)鍵詞:內(nèi)核解碼驅(qū)動(dòng)

        , ,

        (東華大學(xué) 機(jī)械工程學(xué)院,上海 201620)

        0 引言

        手機(jī)屏幕作為最重要的信息輸出部件,承擔(dān)著人機(jī)交互的功能,它的質(zhì)量好壞直接影響著用戶體驗(yàn),因此,在手機(jī)的生產(chǎn)過(guò)程中,屏幕的質(zhì)量檢測(cè)至關(guān)重要。目前國(guó)內(nèi)手機(jī)屏幕檢測(cè)的方法仍然是依靠人工檢測(cè),這種方式耗時(shí)耗力,并且不能夠形成規(guī)?;?、標(biāo)準(zhǔn)化。

        本系統(tǒng)以手機(jī)屏幕缺陷采集為應(yīng)用背景,旨在研究一種小型的低成本的能夠?qū)崟r(shí)的適用于手機(jī)液晶屏幕流水線生產(chǎn)的圖像采集與圖象處理的系統(tǒng)裝置。基于嵌入式Linux平臺(tái),以S5PV210微控制器為主控單元,7寸LCD液晶屏為圖像顯示單元;UVC(USB video class)視頻設(shè)備協(xié)議的usb攝像頭為系統(tǒng)的圖像采集單元,基于最優(yōu)秀多路IO復(fù)用機(jī)制Epoll框架利用V4L2編程接口,進(jìn)行多路圖像采集,圖像編解碼顯示,并為后續(xù)的圖像缺陷檢測(cè)做準(zhǔn)備工作。

        1 系統(tǒng)環(huán)境的搭建

        1.1 系統(tǒng)的硬件平臺(tái)

        為了得到滿足圖像采集與顯示系統(tǒng)需要的最小硬件平臺(tái)。對(duì)S5PV210開(kāi)發(fā)板的硬件資源進(jìn)行裁剪,系統(tǒng)通過(guò)攝像頭進(jìn)行圖像采集,并將采集數(shù)據(jù)送至 ARM 處理器進(jìn)行圖像處理,配載 512M 的 SDRAM 作為系統(tǒng)內(nèi)存和 1G的Nand Flash為系統(tǒng)存儲(chǔ)器以掛載嵌入式 Linux 操作系統(tǒng)和運(yùn)行圖形用戶應(yīng)用程序,期間通過(guò) LCD 顯示屏將采集圖像實(shí)時(shí)顯示給用戶,處理結(jié)果既可以保存于掉電數(shù)據(jù)不丟失的 Flash 存儲(chǔ)器中。為了調(diào)試程序、燒寫系統(tǒng)以及與 PC 機(jī)的通信,保留了 USB 轉(zhuǎn)串口和網(wǎng)線接口以連接到上位機(jī) PC,最后加入電源管理,組成了整個(gè)硬件開(kāi)發(fā)平臺(tái)。

        1.2 系統(tǒng)的軟件框架

        軟件平臺(tái)采用Linux,內(nèi)核版本2.6.35,為針對(duì)目標(biāo)平臺(tái)S5PV210的硬件特性,首先將啟動(dòng)介質(zhì)Uboot下載到了nandflash中,利用Busy box制作了ext3格式的根文件系統(tǒng)。由于程序開(kāi)發(fā)的需要,本系統(tǒng)在uboot的命令行界面中設(shè)置了啟動(dòng)內(nèi)核與掛載根文件的系統(tǒng)的方式。設(shè)置啟動(dòng)命令bootcmd,使開(kāi)發(fā)板通過(guò)tftp下載鏡像(zImage)。設(shè)置啟動(dòng)參數(shù)bootargs,使開(kāi)發(fā)板從nfs去掛載rootfs(內(nèi)核配置應(yīng)使能nfs形式的rootfs)??紤]到內(nèi)核版本與硬件的不兼容問(wèn)題,本系統(tǒng)基于linux內(nèi)核驅(qū)動(dòng)框架,移植了framebuffer驅(qū)動(dòng)程序。如圖1所示,是系統(tǒng)的軟件框架圖。

        圖1 系統(tǒng)軟件框架圖

        2 Framebuffer原理及驅(qū)動(dòng)移植

        framebuffer幀緩沖(簡(jiǎn)稱fb)是Linux內(nèi)核中虛擬出的一個(gè)設(shè)備,提供給用戶態(tài)進(jìn)程一個(gè)統(tǒng)一標(biāo)準(zhǔn)接口實(shí)現(xiàn)直接寫屏操作。從驅(qū)動(dòng)來(lái)看,framebuffer是一個(gè)典型的字符設(shè)備,而且創(chuàng)建了一個(gè)類/sys/class/graphics,用戶可以把Framebuffer當(dāng)作是顯示內(nèi)存的一個(gè)虛擬映像設(shè)備,將framebuffer映射到進(jìn)程地址空間之后,就可以實(shí)現(xiàn)對(duì)LCD屏幕的直接讀寫操作,而這種寫操作可以立刻反應(yīng)在屏幕上。這種操作是統(tǒng)一的、抽象的,用戶完全不必關(guān)心物理顯存的位置、工作原理、刷新頁(yè)面等具體細(xì)節(jié),這些都是由 Framebuffer設(shè)備驅(qū)動(dòng)來(lái)完成。

        2.1 驅(qū)動(dòng)框架部分

        驅(qū)動(dòng)框架部分,是內(nèi)核開(kāi)發(fā)人員編寫,此部分不涉及具體硬件操作,主要包含4個(gè)文件。

        1)fbmem.c此文件主要任務(wù)是:調(diào)用fbmem_init(void)此函數(shù)通過(guò)register_chrdev接口向系統(tǒng)注冊(cè)一個(gè)framebuffer主設(shè)備號(hào)29即fb字符設(shè)備驅(qū)動(dòng),同時(shí)通過(guò)class_create創(chuàng)建graphics類, 配合mdev機(jī)制生成一個(gè)供給用戶訪問(wèn)的設(shè)備文件(/dev目錄下)。linux驅(qū)動(dòng)設(shè)備中,所有的緩存顯示設(shè)備都是由framebuffer子系統(tǒng)來(lái)管理,即linux設(shè)備驅(qū)動(dòng)框架只需要知道一個(gè)主設(shè)備號(hào)為29的framebuffer設(shè)備即可。應(yīng)用層如果要訪問(wèn)framebuffer均會(huì)被推送給fb_fops,統(tǒng)一由此結(jié)構(gòu)體進(jìn)行分發(fā)操作。register_framebuffer(struct fb_info *fb_info)此函數(shù)提供register_framebuffer接口給具體framebuffer驅(qū)動(dòng)編寫著來(lái)注冊(cè)fb設(shè)備。

        單獨(dú)的顯示緩存設(shè)備都被視作一個(gè)framebuffer從虛擬設(shè)備,必須要在驅(qū)動(dòng)加載初始化時(shí),通過(guò)register_framebuffer接口向framebuffer子系統(tǒng)注冊(cè)自己,才能使自己能夠被驅(qū)動(dòng)程序接口調(diào)用。如此,當(dāng)應(yīng)用程序要訪問(wèn)該fb從設(shè)備時(shí),才能方便framebuffer子系統(tǒng)進(jìn)行有序操作和管理分發(fā)。

        2)fbsys.c此文件中的函數(shù)將會(huì)被register_frame buffer接口調(diào)用,用來(lái)實(shí)現(xiàn)frame buffer在/sys目錄下的一些屬性文件bits_per_pixel、modes、stride、rotate…等。

        3)modedb.c即顯示模式庫(kù)文件,此文件是管理顯示模式,如分辨率,刷新率,VGA、720P等。

        4)fb_notify.c其具體作用:被系統(tǒng)調(diào)用,它管理了一個(gè)鏈表,提供給linux內(nèi)核管理,主要用來(lái)做一個(gè)反向喚醒機(jī)制。當(dāng)注冊(cè)了一個(gè)framebuffer驅(qū)動(dòng)之后,系統(tǒng)將會(huì)通知這個(gè)鏈表中所有的驅(qū)動(dòng)。

        2.2 驅(qū)動(dòng)部分

        本系統(tǒng)中framebuffer驅(qū)動(dòng)部分是被實(shí)現(xiàn)成為了platform平臺(tái)總線驅(qū)動(dòng),這部分由驅(qū)動(dòng)開(kāi)發(fā)人員來(lái)編寫,主要做一些硬件相關(guān)的工作,硬件初始化,初始化時(shí)鐘,寄存器,GPIO,中斷等等,包括如下4個(gè)文件。

        1)s3cfb.c驅(qū)動(dòng)主體。屬于一個(gè)platform_driver,通過(guò)此文件中的s3cfb_probe()函數(shù),調(diào)用操作硬件的函數(shù)接口,實(shí)現(xiàn)對(duì)硬件的操作算法。主要做的工作是:ioremap實(shí)現(xiàn)了寄存器地址的動(dòng)態(tài)映射,分配frame buffer的緩存….等

        2)s3cfb_fimd6x.c文件中定義了所有LCD硬件寄存器操作的函數(shù),負(fù)責(zé)對(duì)硬件設(shè)備做一些具體的初始化,配置時(shí)鐘,內(nèi)存映射等。

        3)mach-x210.c負(fù)責(zé)提供platform_device,platformdevices是在開(kāi)機(jī)時(shí),自動(dòng)被注冊(cè),當(dāng)platformdriver注冊(cè)之后,二者將會(huì)配對(duì)。

        4)devs.c為platform_device負(fù)責(zé)提供具體用到的硬件描述信息即resource資源數(shù)據(jù),資源數(shù)據(jù)主要包括LCD有關(guān)的寄存器地址、IO資源、中斷號(hào)等。

        2.3 具體移植操作

        開(kāi)發(fā)Framebuffer設(shè)備驅(qū)動(dòng),存在幾個(gè)重要結(jié)構(gòu)體,需要重點(diǎn)研究,根據(jù)Framebuffer設(shè)備驅(qū)動(dòng)程序的結(jié)構(gòu),驅(qū)動(dòng)主要跟struct fb_info此結(jié)構(gòu)體有關(guān),此結(jié)構(gòu)體記錄了Framebuffer設(shè)備的幾乎全部信息,具體包括設(shè)備的參數(shù)設(shè)置、狀態(tài)信息和底層硬件操作的函數(shù)指針等。在Linuxkernel驅(qū)動(dòng)中,每一個(gè)Framebuffer設(shè)備都對(duì)應(yīng)一個(gè)fb_info才能完成驅(qū)動(dòng)框架部分的接口函數(shù)。

        1)struct fb_info此結(jié)構(gòu)體定封裝了frame buffer驅(qū)動(dòng)的所有有效信息。

        2)struct fb_ops,是fb_info成員結(jié)構(gòu)體,fb_ops硬件操作接口集包含很多接口,如設(shè)置可變參數(shù)、設(shè)置顏色寄存器、清屏接口、畫位圖接口、內(nèi)存映射等。

        3)fb_fix_screeninf此結(jié)構(gòu)體是fb_info成員結(jié)構(gòu)體,填充用戶不可修改的參數(shù),包如顯示內(nèi)存的物理地址和長(zhǎng)度等。

        4)struct fb_var_screeninfo是fb_info成員結(jié)構(gòu)體,填充用戶可以修改的參數(shù),包括屏幕分辨率、每個(gè)像素比特?cái)?shù)等。

        5)struct fb_fops,是Framebuffer屬于字符設(shè)備,用戶通過(guò)fb_fops結(jié)構(gòu)中定義的文件操作接口函數(shù)可以操作Framebuffer設(shè)備。移植需要的具體操作如下:

        1)打開(kāi)kerneldriversvideoKconfig文件,添加代碼:config FB_S3C_EK070TN93

        bool "EK070TN93"

        depends on MACH_SMDKV210 || MACH_SMDKC110

        select BACKLIGHT_PWM

        2)初始化LCD控制器。包括時(shí)鐘信號(hào)的配置,信號(hào)的極性設(shè)置,VSYNC、HSYNC時(shí)序配置,像素配置,使能通道,LCD屏幕坐標(biāo)設(shè)置,framebuffer始末位置設(shè)置,frame buffer在虛擬屏幕中的偏移量設(shè)置,輸出模式等。

        3)添加信息到設(shè)備devs.c中實(shí)現(xiàn)的加入控制器信息到device設(shè)備,如此,驅(qū)動(dòng)框架才會(huì)認(rèn)識(shí)新加入的設(shè)備名字,通過(guò)設(shè)備名字去查找相應(yīng)的probe函數(shù)。

        4)在系統(tǒng)初始化中增加對(duì)lcd的初始。即在系統(tǒng)初始化文件中添加:.init_machine = x210_lcd_init;5)make menuconfig配置,在console選項(xiàng)中還要加入frambuffer support選項(xiàng)。

        6)最后make編譯并執(zhí)行,移植步驟完畢,如果移植完畢后,檢測(cè)沒(méi)有移植成功,可以在如下3個(gè)文中件排查問(wèn)題,:menuconfig、Makefiel、Kconfig。

        經(jīng)過(guò)如上步驟,已經(jīng)完成了framebuffer驅(qū)動(dòng)在linux kernel中的移植工作,已經(jīng)與S5PV210開(kāi)發(fā)板的硬件完美兼容,接下來(lái)的只需要編寫應(yīng)用程序調(diào)用framebuffer驅(qū)動(dòng),將采集到的圖像顯示在開(kāi)發(fā)板的LCD屏幕上。

        3 基于Epoll框架的圖像采集

        Epoll是Linux內(nèi)核為處理大批量文件描述符而作了改進(jìn)的poll,是Linux下多路復(fù)用IO接口select/poll的增強(qiáng)版本,其工作原理如圖2所示:在大量并發(fā)連接中只有少量活躍的情況下,能顯著提高程序系統(tǒng)CPU利用率。獲取事件的時(shí),無(wú)須遍歷整個(gè)被監(jiān)聽(tīng)描述符集,只要遍歷被內(nèi)核IO事件異步喚醒而加入Ready隊(duì)列的描述符集合。

        圖2 Epoll機(jī)制工作原理

        V4L2(Video For Linux Two)是Linux操作系統(tǒng)下用于采集圖片、視頻和音頻數(shù)據(jù)的API接口,配合適當(dāng)?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動(dòng)程序,可以實(shí)現(xiàn)圖像采集。在Linux操作系統(tǒng)中一切皆文件,在本系統(tǒng)中,攝像頭設(shè)備文件是"/dev/video0"。V4L2支持兩種方式來(lái)采集圖像:內(nèi)存映射方式(mmap)和直接讀取方式(read)。V4L2在videodev.h文件中定義了一些重要的數(shù)據(jù)結(jié)構(gòu),在采集圖像的過(guò)程中,通過(guò)對(duì)這些數(shù)據(jù)的操作來(lái)獲得最終的圖像數(shù)據(jù)。如圖3所示是V4L2在linux中的驅(qū)動(dòng)框架如圖3所示。

        圖3 V4L2驅(qū)動(dòng)框架圖

        如圖4所示是epoll框架的V4L2圖像采集流程:

        第一步,打開(kāi)視頻設(shè)備文件,通過(guò)V4L2接口進(jìn)行視頻采集的參數(shù)初始化。

        第二步,申請(qǐng)若干視頻采集的幀緩沖區(qū),并將這些幀緩沖區(qū)從內(nèi)核空間映射到用戶空間,便于應(yīng)用程序讀取并處理圖像數(shù)據(jù)。

        第三步,將申請(qǐng)到的幀緩沖區(qū)在視頻采集輸入隊(duì)列排隊(duì),并啟動(dòng)視頻采集。

        第四步,開(kāi)始視頻數(shù)據(jù)的采集,應(yīng)用程序從視頻采集輸出隊(duì)列取出幀緩沖區(qū),處理完后,將幀緩沖區(qū)重新放入視頻采集輸入隊(duì)列,循環(huán)往復(fù)采集連續(xù)的視頻數(shù)據(jù)。

        第五步,在事件處理函數(shù)void cammer_handler(int fd,void *arg)里面保存圖像數(shù)據(jù)。

        第六步,由于次攝像頭只支持YUVU格式圖片采集,需要調(diào)用函數(shù)對(duì)圖片格進(jìn)行轉(zhuǎn)化,最后采集到的圖像數(shù)據(jù)image_jpeg.jpg和image_bmp.bmp。

        4 基于framebuffer圖像解碼顯示

        4.1 framebuffer圖像顯示

        framebuffer幀緩沖(簡(jiǎn)稱fb)是Linux內(nèi)核中虛擬出的一個(gè)設(shè)備,它向應(yīng)用層提供一個(gè)統(tǒng)一的標(biāo)準(zhǔn)編程接口,它向應(yīng)用層屏蔽了驅(qū)動(dòng)層的一些細(xì)節(jié),方便用戶進(jìn)行應(yīng)用編程。從驅(qū)動(dòng)來(lái)看,fb是一個(gè)典型的字符設(shè)備。如圖4是frame buffer驅(qū)動(dòng)框架圖。本系統(tǒng)中基于framebuffer驅(qū)動(dòng),圖像顯示程序的關(guān)鍵如下:

        (1)設(shè)備文件fbfd = open(FBDEVICE, O_RDWR);

        (2)獲取設(shè)備信息vinfo.xres, vinfo.yres,vinfo.bits_per_pixel

        (3)mmap做映射pfb = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0);

        (4)填充framebuffervoid fb_draw2(const struct pic_info *pPic)

        由此可以直接利用 Video4Linux 采集的圖像數(shù)據(jù),映射到 Framebuffer 的內(nèi)存區(qū)域中,便可以直接顯示到 LCD上。也可將攝像頭采集到的數(shù)據(jù)直接保存成 JPG 或BMP 等格式的圖像文件后,利用jpeglib解碼,映射到Framebuffer的內(nèi)存區(qū)域中,同樣可以顯示到LCD上。

        4.2 libjpeg庫(kù)的移植及JPEG圖片解碼

        JPEG靜態(tài)圖片壓縮標(biāo)準(zhǔn)是一種被廣泛認(rèn)可的圖像格式標(biāo)準(zhǔn),JPEG 標(biāo)準(zhǔn)是在變換編碼的基礎(chǔ)上,綜合應(yīng)用了 DCT 和哈夫曼編碼兩種手段達(dá)到了很好的圖像壓縮效果, 基于 D C T 的編碼方法是JPEG 算法的核心內(nèi)容。JPEG算法的實(shí)現(xiàn)流程主要包括圖像分割、顏色空間轉(zhuǎn)換、DCT(Discrete cosine transform)、Quantization(數(shù)據(jù)量化)、Huffman coding(數(shù)據(jù)進(jìn)行編碼)。如圖5是DCT基壓縮解壓框圖。

        圖5 DCT壓縮解壓框圖

        如圖5所示:圖像壓縮大致可以概括成3個(gè)步驟,原始圖像經(jīng)映射變換后的數(shù)據(jù),經(jīng)量化器和熵編碼器后以碼流的形式輸出。

        1)映射變換。通過(guò)映射改變圖像像素的特性,更加有利于對(duì)圖像進(jìn)行壓縮編碼。

        2)量化器。對(duì)映射后的數(shù)據(jù)進(jìn)行量化,可分為標(biāo)準(zhǔn)量化和矢量量化。對(duì)映射后的數(shù)據(jù)進(jìn)行逐個(gè)的量化,稱標(biāo)準(zhǔn)量化,若對(duì)映射后的數(shù)據(jù)成組的進(jìn)行量化,稱矢量量化。量化必然會(huì)造成圖像的某些信息丟失,導(dǎo)致失真,即量化失真或量化噪聲。量化的精細(xì)程度與壓縮比例始終是對(duì)立的,所以應(yīng)選用適當(dāng)?shù)牧炕?jí)數(shù)和量化曲線形狀來(lái)平衡這對(duì)矛盾。量化器的使用是圖像編碼產(chǎn)生失真的根本原因,如果使用了量化器,不可能保證復(fù)原圖像與原始圖完全一致。

        3)熵編碼器。其作用是用來(lái)消除符號(hào)編碼冗余度的,一般不導(dǎo)致失真,理論上,編出的碼流的平均碼長(zhǎng)應(yīng)該等于量化后數(shù)據(jù)的信息熵。

        DCT變換就是利用傅立葉變換的特性.采用圖像邊界褶翻將像變換為偶函數(shù)形式,接著對(duì)圖像數(shù)據(jù)進(jìn)行二維傅立葉變換,變后就只包含余弦項(xiàng)。所以稱之為離散余弦變換。

        首先,將圖像分割成8*8的小塊,在JPEG壓縮算法中,通常情況是將顏色空間轉(zhuǎn)換成YCbCr空間,Y表示亮度,Cb和Cr分別表示藍(lán)色和紅色的色差值,其轉(zhuǎn)換公式為:

        Y=0.289R+0.589G+0.124B

        Cr=(0.501R-0.4186G-0.0823B)+128

        Cb=(-0.1687R+0.3313G+0.500B)+128

        DCT變換的本質(zhì)就是將原來(lái)的小塊圖像投影到新的空間中,經(jīng)過(guò)DCT變換后,原本雜亂的數(shù)據(jù)將變得工整。如下是DCT變換的公式:

        F=AfAT

        在DCT變換之后,圖像的數(shù)據(jù)信息并沒(méi)有丟失,需要對(duì)其進(jìn)行量化處理Quantization,根據(jù)圖像中的數(shù)據(jù)元素的使用頻率,調(diào)整元素的編碼長(zhǎng)度,以獲最優(yōu)壓縮比,進(jìn)行哈弗曼編碼壓縮,至此在保證不丟失信息的前提下,則可以實(shí)現(xiàn)數(shù)據(jù)的無(wú)損壓縮。本系統(tǒng)通過(guò)上面的基于epoll框架的圖片采集可以得到的是經(jīng)過(guò)編碼壓縮后的jpg格式的圖片,jpg格式的圖片數(shù)據(jù)量比bmp格式圖片小很多,有利于圖片傳輸與保存。

        4.3 libjpg解碼顯示具體實(shí)現(xiàn)

        libjpeg是一個(gè)完全用C語(yǔ)言編寫的庫(kù),被廣泛應(yīng)用于JPEG解碼、JPEG編碼等應(yīng)用中。首先需要移植libjpeg到系統(tǒng)中,編寫int is_jpg(const char *path)函數(shù),判斷是否是jpg圖片。static int jpg_analyze(struct pic_info *pPic)此函數(shù)功能: 解碼jpg圖片,并將解碼出來(lái)的數(shù)據(jù)存儲(chǔ);函數(shù)參數(shù): pPic,記錄源jpg圖片,解碼出來(lái)的圖片寬高、圖片數(shù)據(jù)緩沖區(qū)等信息。如圖6所示,是本系統(tǒng)jpg圖片解碼顯示軟件流程圖。具體實(shí)現(xiàn)如下:

        第1步: 錯(cuò)誤處理函數(shù)部分的綁定,給解碼器做必要的內(nèi)存分配和數(shù)據(jù)結(jié)構(gòu)的初始化。

        cinfo.err = jpeg_std_error(&jerr.pub);jerr.pub.error_exit = my_error_exit;

        jpeg_create_decompress(&cinfo);

        第2步: 將fopen打開(kāi)的源jpg圖片和解碼器關(guān)聯(lián)jpeg_stdio_src(&cinfo, infile);

        第3步: 讀jpg文件頭;

        jpeg_read_header(&cinfo, TRUE);

        第4步: 啟動(dòng)解碼器jpeg_start_decompress(&cinfo);

        第5步: 逐行解碼并將解碼出的數(shù)據(jù)丟到緩沖區(qū)jpeg_read_scanlines(&cinfo, &buffer, 1);

        第6步: 解碼完了,做清理工作jpeg_destroy_decompress(&cinfo);

        第7步:調(diào)用函數(shù),從圖片存放路徑,遞歸檢索圖片,顯示到LCD;

        int display_jpg(const char *pathname);

        fb_draw2(&picture);

        圖6 jpg圖片解碼顯示軟件流程圖

        本程序能夠?qū)崿F(xiàn)遞歸檢索文件夾,bmp、jpg圖片解碼顯示LCD屏幕上,同時(shí)還是實(shí)現(xiàn)了觸摸屏播放顯示。本系統(tǒng)選取了手機(jī)屏幕缺陷中的白屏黑點(diǎn)屏,黑屏亮點(diǎn)屏,綠屏黑點(diǎn)屏,花屏黑點(diǎn)屏進(jìn)行實(shí)驗(yàn)測(cè)試,如圖7所示,是jpeg解碼顯示測(cè)試圖,本系統(tǒng)能夠?qū)z像頭采集到的手機(jī)液晶屏幕缺陷圖像顯示在開(kāi)發(fā)板的LCD顯示屏上。

        圖7 jpeg解碼顯示測(cè)試圖

        5 結(jié)論

        本文設(shè)計(jì)了基于嵌入式Linux的圖像采集與顯示系統(tǒng),能夠?qū)崿F(xiàn)多路攝像頭實(shí)時(shí)采集圖像,并且能夠?qū)崟r(shí)顯示在LCD屏幕上,還實(shí)現(xiàn)了圖像的BMP格式與JPEG格式保存,有利于后續(xù)對(duì)圖片做一些圖像檢測(cè),例如TFT手機(jī)屏幕缺陷檢測(cè),基于深度學(xué)習(xí)模式識(shí)別等應(yīng)用。在大型工廠車間多條流水線快速作業(yè)的手機(jī)屏幕生產(chǎn)線上,可以利用此系統(tǒng)裝置實(shí)時(shí)快速的對(duì)手機(jī)液晶屏幕總成缺陷進(jìn)行自動(dòng)檢測(cè),代替人工肉眼檢測(cè)的同時(shí),又避免了耗費(fèi)大量的人力物力財(cái)力。不僅減少了人工的重復(fù)勞動(dòng)和生產(chǎn)成本,節(jié)約了時(shí)間和空間,提高了生產(chǎn)效率,

        而且提高了手機(jī)液晶屏生產(chǎn)線的自動(dòng)化程度。本系統(tǒng)適合工業(yè)自動(dòng)化領(lǐng)域,它成本低、功耗低、體積小,可以方便的應(yīng)用到圖像采集,圖象處理,視頻監(jiān)控,安全防范等項(xiàng)目中。

        [1]劉崢嶸,張曉薇,俞 輝,等編著.嵌入式Linux應(yīng)用開(kāi)發(fā)[M].北京:機(jī)械工業(yè)出版社,2004

        [2]韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.

        [3]劉 森.嵌入式系統(tǒng)接口設(shè)計(jì)與Linux驅(qū)動(dòng)程序開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2006

        [4]于殿泓.圖像檢測(cè)與處理技術(shù)[ M].西安: 西安電子科技大學(xué)出版社,2006.

        [5]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,1992.

        [6] 許宏松.Linux 應(yīng)用程序開(kāi)發(fā)指南[M].北京:機(jī)械工業(yè)出版社, 2000.

        [7] 杜春雷.ARM體系結(jié)構(gòu)與編程[M]. 北京:清華大學(xué)出版社, 2003.

        [8] 宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M]. 北京:人民郵電出版社, 2008.

        猜你喜歡
        內(nèi)核解碼驅(qū)動(dòng)
        萬(wàn)物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
        《解碼萬(wàn)噸站》
        基于模糊PI控制的驅(qū)動(dòng)防滑仿真系統(tǒng)分析
        強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        屈宏斌:未來(lái)五年,雙輪驅(qū)動(dòng),砥礪前行
        解碼eUCP2.0
        軌旁ATC系統(tǒng)門控柜接收/驅(qū)動(dòng)板改造
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
        NAD C368解碼/放大器一體機(jī)
        Quad(國(guó)都)Vena解碼/放大器一體機(jī)
        深夜福利国产| 国产免费又爽又色又粗视频| 国产成人无码av| 国产精品人妻一码二码尿失禁| 精品国产91天堂嫩模在线观看| 亚洲av综合色区在线观看| 极品少妇一区二区三区| 欲女在线一区二区三区| 久久99精品久久水蜜桃| 又黄又爽又色的视频| 国产成人精品cao在线| 日本午夜a级理论片在线播放| 亚洲国产美女高潮久久久| 国产一精品一av一免费| 亚洲一本大道无码av天堂| 欧美zozo另类人禽交| 91精品国产综合久久国产| 女同同性av观看免费| 久久无码av一区二区三区| 色拍拍在线精品视频| 日产精品一区二区三区免费 | 人妻中文字幕在线一二区| 亚洲av高清一区二区三| 天天躁日日躁狠狠久久| 2022Av天堂在线无码| 亚洲国产精品一区亚洲国产| 日韩一区二区三区精品视频| 久久精品无码一区二区日韩av| 亚洲精品国产成人| 国产精品自线在线播放| 精品国产三区在线观看| 激情综合色综合啪啪开心| 性欧美牲交xxxxx视频欧美| 乱人伦人妻中文字幕无码| 亚洲一级天堂作爱av| 亚洲成人av一二三四区| 国产熟妇按摩3p高潮大叫| 国产精品美女AV免费观看| 日韩女优在线一区二区| 久久婷婷五月综合色奶水99啪| 四虎国产精品免费久久|