亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

移動終端采集圖像的方法和移動終端與流程

文檔序號:12038132閱讀:249來源:國知局
移動終端采集圖像的方法和移動終端與流程

本發(fā)明涉及一種移動終端采集圖像的方法和移動終端。



背景技術(shù):

由于行業(yè)終端的特殊性,其對二維掃描解碼有著特殊的需求,需要專業(yè)的掃碼設(shè)備,即掃碼引擎。而掃碼引擎實際上是一個特殊的攝像頭,包含了除攝像頭之外的補(bǔ)光系統(tǒng)、對準(zhǔn)系統(tǒng)等,這決定了其在獲取掃描圖像時,采用的是攝像頭的方式去捕捉圖像。

但是在類android(是一種基于linux的自由及開放源代碼的操作系統(tǒng))系統(tǒng)中,如圖1所示,攝像頭(包括攝像頭硬件實體camerahardware和攝像頭驅(qū)動cameradriver)捕捉的圖像經(jīng)hal(hardwareabstractionlayer,硬件抽象層)后,只能通過jni(javanativeinterface,java本地接口)接口繼續(xù)往java(是一種撰寫跨平臺應(yīng)用程序的面向?qū)ο蟮某绦蛟O(shè)計語言)應(yīng)用層傳遞(即圖1中的camera應(yīng)用),再由系統(tǒng)應(yīng)用層的相關(guān)應(yīng)用把該圖像展示給終端使用者,倘若掃描引擎也是通過這種方式捕捉圖像,再由相應(yīng)的解碼庫在應(yīng)用層去解析圖像,從中解析出掃碼結(jié)果供使用者使用,會導(dǎo)致逐層傳遞圖像比較耗時,很難滿足行業(yè)對掃碼效率的要求。

然而,現(xiàn)有技術(shù)中在解決捕獲圖像耗時的技術(shù)問題時,可通過linux(是一套免費使用和自由傳播的類unix操作系統(tǒng))內(nèi)核中的v4l2(video4linux2視頻采集架構(gòu))框架去實現(xiàn)掃碼引擎的驅(qū)動,然后通過v4l2提供的一系列ioctl(標(biāo)準(zhǔn)輸入輸出控制)操作命令,直接在掃碼應(yīng)用中獲得圖像。但是這樣的實現(xiàn)方式忽略了系統(tǒng)在自有平臺上對v4l2的進(jìn)一步封裝和處理,仍然無法快速捕獲掃描圖像。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中的移動終端在掃描獲取圖像時,逐層傳遞數(shù)據(jù)導(dǎo)致耗時長、效率低下、使用v4l2架構(gòu)受到平臺封裝的約束的缺陷,提供一種移動終端采集圖像的方法和移動終端。

本發(fā)明是通過下述技術(shù)方案解決上述技術(shù)問題的:

一種移動終端采集圖像的方法,所述移動終端包括一掃碼引擎,其特點在于,所述移動終端在系統(tǒng)的硬件抽象層執(zhí)行以下步驟:

s1、初始化一存儲空間;

s2、獲取調(diào)用所述掃碼引擎的硬件抽象層的接口;

s3、通過所述接口啟動所述掃碼引擎;

s4、所述掃碼引擎在接收到一控制指令后獲得一圖像;

s5、存儲所述圖像至所述存儲空間內(nèi)。

系統(tǒng)的硬件抽象層是指:移動終端內(nèi)設(shè)置有操作平臺,該操作平臺的系統(tǒng)架構(gòu)內(nèi)對應(yīng)的硬件抽象層。本方案在系統(tǒng)的硬件抽象層執(zhí)行上述步驟,能將掃碼引擎獲得的圖像停留在硬件抽象層,避免了獲得的圖像繼續(xù)往應(yīng)用層傳遞,減少了圖像逐層傳遞產(chǎn)生的耗時;且直接調(diào)用掃碼引擎的硬件抽象層的接口,能夠克服使用v4l2架構(gòu)受到平臺封裝的約束,既能快速獲得掃碼圖像,又能避免受到操作平臺的限制。

較佳地,步驟s2為:

通過加載camerahallibrary的方式獲取調(diào)用所述掃碼引擎的硬件抽象層的接口。camerahallibrary是代碼編譯后生成的庫文件,該庫文件表示攝像頭camera在hal硬件抽象層的功能庫,

較佳地,步驟s3和步驟s4之間還包括:

s31、設(shè)置圖像的形成參數(shù),所述形成參數(shù)包括所述圖像的分辨率和所述圖像的數(shù)據(jù)格式。

較佳地,步驟s4之前還包括:

sa、在所述掃碼引擎的硬件抽象層中設(shè)置一控制接口,所述控制接口用于接收所述控制指令。

較佳地,步驟s5之后包括:

s51、將所述圖像傳輸至一解碼模塊,所述解碼模塊用于將所述圖像解碼。

較佳地,所述存儲空間包括圖像隊列所需的第一存儲空間,步驟s5為:

存儲所述圖像形成的數(shù)據(jù)流至所述第一存儲空間以形成一圖像隊列。

較佳地,所述存儲空間還包括環(huán)形緩沖區(qū)的第二存儲空間,步驟s5之后還包括:

s52、從所述圖像隊列中采集單幀圖像,并將所述單幀圖像存儲于所述第二存儲空間內(nèi)。

本發(fā)明還提供一種移動終端,所述移動終端包括一掃碼引擎,其特點在于,所述移動終端在系統(tǒng)的硬件抽象層具有一初始化模塊、一接口獲取模塊、一啟動模塊、一控制模塊和一存儲模塊;

所述初始化模塊用于初始化一存儲空間;

所述接口獲取模塊用于獲取調(diào)用所述掃碼引擎的硬件抽象層的接口;

所述啟動模塊用于通過所述接口啟動所述掃碼引擎;

所述控制模塊用于向所述掃碼引擎發(fā)送一控制指令以獲得一圖像;

所述存儲模塊用于存儲所述圖像至所述存儲空間內(nèi)。

較佳地,所述接口獲取模塊還用于通過加載camerahallibrary的方式獲取調(diào)用所述掃碼引擎的硬件抽象層的接口。

較佳地,所述移動終端還包括一第一設(shè)置模塊,所述第一設(shè)置模塊用于在啟動所述掃碼引擎后設(shè)置圖像的形成參數(shù),所述形成參數(shù)包括所述圖像的分辨率和所述圖像的數(shù)據(jù)格式。

較佳地,所述移動終端還包括一第二設(shè)置模塊,所述第二設(shè)置模塊用于在所述掃碼引擎的硬件抽象層中設(shè)置一控制接口,所述控制接口用于接收所述控制指令。

本發(fā)明的積極進(jìn)步效果在于:本發(fā)明能將掃碼引擎獲得的圖像停留在硬件抽象層,避免了獲得的圖像繼續(xù)往應(yīng)用層傳遞,減少了圖像逐層傳遞產(chǎn)生的耗時;且直接調(diào)用掃碼引擎的硬件抽象層的接口,能夠克服使用v4l2架 構(gòu)受到平臺封裝的約束,既能快速獲得掃碼圖像,又能避免受到操作平臺的限制。

附圖說明

圖1為現(xiàn)有技術(shù)中的移動終端在操作系統(tǒng)的架構(gòu)層上實現(xiàn)的圖像采集的流程圖。

圖2為本發(fā)明實施例1的移動終端采集圖像的方法流程圖。

圖3為本發(fā)明實施例1的移動終端在操作系統(tǒng)的架構(gòu)層上實現(xiàn)的圖像采集的流程圖。

圖4為本發(fā)明實施例2的移動終端的結(jié)構(gòu)示意圖。

具體實施方式

下面通過實施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。

實施例1

本實施例提供一種移動終端采集圖像的方法,如圖2-3所示,圖3中的箭頭表示數(shù)據(jù)傳輸方向,所述移動終端包括一掃碼引擎,該掃碼引擎與普通的攝像頭的區(qū)別主要在于,掃碼引擎相比于普通攝像頭而言增加有一些輔助系統(tǒng),如瞄準(zhǔn)、補(bǔ)光;且掃碼引擎采用對比度較高的黑白圖像,以利于解碼。而本實施例的掃碼引擎包括掃碼引擎的硬件實體(如圖3中的scanenginehardware)和掃碼引擎實體的驅(qū)動(如圖3中的scanenginedriver),所述移動終端在系統(tǒng)的硬件抽象層執(zhí)行以下步驟:

步驟101、初始化一存儲空間;

也即新建存儲空間,所述存儲空間包括圖像隊列所需的第一存儲空間和環(huán)形緩沖區(qū)的第二存儲空間。

步驟102、獲取調(diào)用所述掃碼引擎的硬件抽象層的接口;

具體地,通過加載camerahallibrary的方式獲取調(diào)用所述掃碼引擎的 硬件抽象層的接口。camerahallibrary是代碼編譯后生成的庫文件,該庫文件表示攝像頭camera在hal硬件抽象層的功能庫,該庫文件中包括有若干用于啟動掃碼引擎和傳輸圖像的軟件接口(如圖3中的api,applicationprogramminginterface,應(yīng)用程序編程接口),比如,添加圖像通道的接口、添加圖像流類型的接口、開始圖像捕捉的接口等,該些接口均是為圖像傳輸、圖像抓取以及掃碼引擎的啟動等操作服務(wù)的。

其中,移動終端的操作平臺可為高通操作平臺或其它操作平臺,采用高通操作平臺時,移動終端的處理器可采用高通公司的處理器msm(mobilestationmodem,移動基帶工作站),msm是高通芯片的一個系列,是指帶有基帶芯片的移動處理器。由于高通操作平臺對攝像頭的v4l2做了封裝,因此在調(diào)用掃碼引擎的硬件抽象層的接口時,直接利用高通在自有平臺上對攝像頭的v4l2做的封裝工作,從而獲得所述接口。而采用其它操作平臺時,對應(yīng)也會有該平臺對攝像頭的v4l2做的封裝接口,以供在系統(tǒng)的硬件抽象層調(diào)用該接口。

而系統(tǒng)的硬件抽象層和掃碼引擎的硬件抽象層處于同一層級,使得在系統(tǒng)的硬件抽象層能夠直接調(diào)用掃碼引擎在硬件抽象層的接口。

步驟103、通過所述接口啟動所述掃碼引擎;

啟動掃碼引擎包括為掃碼引擎硬件上電、創(chuàng)建掃碼引擎工作時所需的資源,如掃碼引擎的初始化、掃碼引擎的型號檢查、檢查掃碼引擎的受控操作接口等。

在啟動掃碼引擎后,為了使得掃碼引擎獲得的圖像與掃碼引擎的硬件實體的性能參數(shù)匹配,以更可靠地獲得掃描的圖像,在啟動掃碼引擎后設(shè)置圖像的形成參數(shù),所述形成參數(shù)包括所述圖像的分辨率和所述圖像的數(shù)據(jù)格式。

此外,在啟動掃碼引擎后還設(shè)置一控制接口,該控制接口可為ioctl接口,所述控制接口用于接收控制指令,控制指令是用于控制掃碼引擎的硬件實體響應(yīng)操作的,該控制指令可包括用于控制掃碼引擎的補(bǔ)光燈是否打開的指令、用于控制硬件實體執(zhí)行掃描的指令等。在掃碼時,用戶是處于移動 終端的應(yīng)用層的,為了使得用戶知曉自身對移動終端執(zhí)行的操作,用戶可在應(yīng)用層可視化地發(fā)送該控制指令(如圖3中的cmd所示);而由于本實施例是在系統(tǒng)的硬件抽象層執(zhí)行上述步驟,因此該控制指令也可從系統(tǒng)的硬件抽象層發(fā)出,從而實現(xiàn)自動地控制掃碼引擎。

步驟104、所述掃碼引擎在接收到一控制指令后獲得一圖像;

掃碼引擎在收到控制指令時在硬件上去捕捉圖像,掃碼引擎捕捉到的圖像通過掃碼引擎的硬件抽象層的接口傳輸至系統(tǒng)的硬件抽象層,本實施例便是在系統(tǒng)的硬件抽象層獲取掃描的圖像。由于圖像是通過掃碼方式獲得的,因此獲得的圖像是由一幀幀的圖像形成的圖像隊列,該圖像隊列可以看做為一個streaming(數(shù)據(jù)流),streaming中包含一幀幀圖像,處理圖像便是從streaming中取一幀圖像,放置到環(huán)形緩沖區(qū)中,以供使用者讀取。

步驟105、存儲所述圖像至所述存儲空間內(nèi)。

具體地,存儲所述圖像形成的數(shù)據(jù)流至所述第一存儲空間以形成圖像隊列,當(dāng)用戶需要讀取掃描的圖像時,則將所述圖像隊列中的單幀圖像存儲于所述第二存儲空間內(nèi),從而完成圖像的采集。

第二存儲空間為環(huán)形緩沖區(qū),使用環(huán)形緩沖區(qū)的優(yōu)勢在于不會浪費存儲空間,從streaming中拿得圖像后,便寫入到環(huán)形緩沖區(qū)中,直到寫滿為止,此時streaming并未停止,等環(huán)形緩沖區(qū)中的buffer(緩沖)即圖像被取走后,便繼續(xù)從streaming中獲得寫入到環(huán)形緩沖區(qū),如此循環(huán)。而讀寫指針用以控制寫入和讀取的異步。

步驟106、將所述圖像傳輸至一解碼模塊,所述解碼模塊用于將所述圖像解碼。

針對在應(yīng)用層的掃碼應(yīng)用軟件,可將掃碼的結(jié)果直接呈現(xiàn)給用戶,即將存儲的圖像(如圖3中的image)傳輸至解碼模塊(如圖3中的decodinglibrary),解碼模塊可位于系統(tǒng)的硬件抽象層,該解碼模塊可為現(xiàn)有技術(shù)中具有解碼功能的封裝包,將圖像傳輸至解碼模塊即可獲得圖像的解碼結(jié)果,從而將解碼結(jié)果呈現(xiàn)至應(yīng)用層。

本實施例利用移動終端的操作平臺上對攝像頭的v4l2做的封裝工作,在系統(tǒng)的硬件抽象層獲得該封裝接口,并在從hal抓取圖像,很好地避免了圖像再往java應(yīng)用層送遞,且java層對圖像再處理等操作帶來的耗時。

可以說,本實施例的各步驟相當(dāng)于在系統(tǒng)的硬件抽象層新增的掃描圖像采集接口(如圖3中的scanhal),該掃描圖像采集接口在用戶空間userspace和內(nèi)核空間kernelspace之間進(jìn)行交互,圖3中的附圖標(biāo)記a表示本實施例的各步驟在標(biāo)示框a內(nèi)實現(xiàn),該圖像采集接口能夠?qū)叽a引擎獲得的圖像采集下來,并根據(jù)需要將圖像的解碼結(jié)果傳輸至應(yīng)用層(如圖3中的scan應(yīng)用)。而現(xiàn)有技術(shù)中并未在該系統(tǒng)的硬件抽象層設(shè)置這樣的接口,使得現(xiàn)有技術(shù)中的掃碼引擎獲得的圖像只能通過圖1中所示的jni接口繼續(xù)往java應(yīng)用層傳遞,從而產(chǎn)生圖像逐層傳遞、以及圖像在應(yīng)用層解碼導(dǎo)致的耗時。

也即,本實施例不再將圖像往應(yīng)用層傳遞,而只是將掃碼引擎獲得的圖像停留在硬件抽象層,在需要獲得解碼結(jié)果時,直接將解碼的結(jié)果傳輸至應(yīng)用層,避免了圖像逐層傳遞產(chǎn)生的耗時。而直接調(diào)用掃碼引擎的硬件抽象層的接口,能夠克服使用v4l2架構(gòu)受到平臺封裝的約束,既能快速獲得掃碼圖像,又能避免受到操作平臺的限制。

實施例2

本實施例提供一種移動終端,如圖4所示,所述移動終端包括一掃碼引擎1,所述移動終端在系統(tǒng)的硬件抽象層具有一初始化模塊2、一接口獲取模塊3、一啟動模塊4、一控制模塊5和一存儲模塊6;

所述初始化模塊2用于初始化一存儲空間;所述存儲空間包括圖像隊列所需的第一存儲空間和環(huán)形緩沖區(qū)的第二存儲空間。

所述接口獲取模塊3用于獲取調(diào)用所述掃碼引擎的硬件抽象層的接口;

所述啟動模塊4用于通過所述接口啟動所述掃碼引擎;

所述控制模塊5用于向所述掃碼引擎發(fā)送一控制指令以獲得一圖像;

所述存儲模塊6用于存儲所述圖像至所述存儲空間內(nèi)。

具體地,將所述圖像形成的數(shù)據(jù)流存儲至所述第一存儲空間以形成圖像 隊列,將所述圖像隊列中的單幀圖像存儲于所述第二存儲空間內(nèi)。

在需要獲得解碼的結(jié)果時,將所述圖像傳輸至一解碼模塊,所述解碼模塊用于將所述圖像解碼,以將解碼的結(jié)果傳輸至應(yīng)用層。

所述接口獲取模塊3還用于通過加載camerahallibrary的方式獲取調(diào)用所述掃碼引擎的硬件抽象層的接口。

所述移動終端還包括一第一設(shè)置模塊7,所述第一設(shè)置模塊7用于在啟動所述掃碼引擎后設(shè)置圖像的形成參數(shù),所述形成參數(shù)包括所述圖像的分辨率和所述圖像的數(shù)據(jù)格式。

所述移動終端還包括一第二設(shè)置模塊8,所述第二設(shè)置模塊8用于在所述掃碼引擎的硬件抽象層中設(shè)置一控制接口,所述控制接口用于接收所述控制指令。

本實施例能將掃碼引擎獲得的圖像停留在硬件抽象層,避免了獲得的圖像繼續(xù)往應(yīng)用層傳遞,減少了圖像逐層傳遞產(chǎn)生的耗時;且直接調(diào)用掃碼引擎的硬件抽象層的接口,能夠克服使用v4l2架構(gòu)受到平臺封裝的約束,既能快速獲得掃碼圖像,又能避免受到操作平臺的限制。

雖然以上描述了本發(fā)明的具體實施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1