• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      淺談OpenCV計算機視覺庫

      2017-02-28 09:22:17杜聰
      科技資訊 2016年28期
      關(guān)鍵詞:函數(shù)庫圖像識別圖像處理

      杜聰

      摘 要:用C、C++、Java等計算機語言編一個圖像識別程序,常常需要借助一些圖像處理的工具庫,OpenCV就是其中之一,使用OpenCV要比使用計算機應(yīng)用軟件困難,需要前期復(fù)雜的準(zhǔn)備工作,如果了解了OpenCV與其他圖像處理應(yīng)用軟件的區(qū)別、學(xué)習(xí)OpenCV的基礎(chǔ)、運行環(huán)境、圖像操作原理以及OpenCV文檔包含的內(nèi)容,學(xué)習(xí)和使用OpenCV就會容易很多。

      關(guān)鍵詞:圖像處理 OpenCV C C++

      中圖分類號:TP31 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2016)10(a)-0007-02

      圖像識別技術(shù)已經(jīng)應(yīng)用到生活中的許多方面。文字識別系統(tǒng),直接把圖片上的文字掃描成文本文檔格式。人臉識別技術(shù)已經(jīng)用到了智能手機之中,現(xiàn)在的手機解鎖可以直接使用人臉識別。指文圖像識別的應(yīng)用更為廣泛,如辦理身份證、入學(xué)考試、駕照等用來確認(rèn)身份。百度、Google、蘋果等公司研究的無人駕駛汽車,將該技術(shù)用于對障礙物、路標(biāo)、行人及其他車輛的判斷。道路交通監(jiān)控系統(tǒng)中,系統(tǒng)自動檢索違規(guī)車輛,并對車輛的車牌等信息進(jìn)行識別。通過車牌提取、圖像預(yù)處理、特征提取、車牌字符識別等技術(shù),識別車輛牌號,目前,字母和數(shù)字的識別率可達(dá)96%,漢字的識別率可達(dá)95% [1-2]。所有的這些都用到了圖像識別功能,要編寫圖像識別程序使用OpenCV是一個不錯的選擇。

      1 OpenCV簡介

      OpenCV是Intel公司于1999年推出的一種面向圖像處理的開源計算機視覺庫,其中,OpenCV是Open Source Computer Vision Library的縮寫,如今由Willow Garage提供支持,其中包括了3個版本OpenCV1、OpenCV2、OpenCV3,除了OpenCV1現(xiàn)在很少使用外,其他兩個版本已經(jīng)有了很多改進(jìn)的版本。OpenCV有開源的函數(shù)庫,可以滿足不同領(lǐng)域的圖像處理需求,使用時以函數(shù)調(diào)用的形式提供給用戶,也可以對其代碼進(jìn)行改進(jìn),便于用戶實驗教學(xué)或程序開發(fā)使用。

      2 OpenCV的特點

      (1)開源。OpenCV是一個開源的圖像處理函數(shù)庫,無論是商業(yè)應(yīng)用,還是做科學(xué)研究,完全是免費的,與Linux類似它的源代碼也是公開的,這樣程序的安全性就得到保障,OpenCV的函數(shù)庫是用C語言和C++語言進(jìn)行編寫的,源代碼可讀性比較高,發(fā)現(xiàn)其中不足之處可以自行進(jìn)行修改,避免編譯后的可執(zhí)行文件出現(xiàn)漏洞。

      (2)跨平臺。OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Windows、Linux、Mac OS和嵌入式等操作系統(tǒng)上[3]。

      (3)應(yīng)用領(lǐng)域廣。OpenCV圖像處理可以使用到多個領(lǐng)域當(dāng)中,包括生物醫(yī)學(xué)、工業(yè)、軍事安防、機器視覺、航空航天等。目前已知OpenCV編程系統(tǒng)在航空航天定位、衛(wèi)星地圖繪制、工廠大規(guī)模生產(chǎn)視覺檢測等方面得到了廣泛的應(yīng)用,同時對于無人飛行器的視覺捕捉技術(shù)也有極大的幫助[4]。

      (4)支持多種語言進(jìn)行開發(fā)。OpenCV中包括了多種編程語言的接口,其中支持的編程語言包括C、C++、C#、Java、Python等。

      3 OpenCV與圖像處理應(yīng)用軟件

      在計算機學(xué)習(xí)中也會學(xué)到一些其他的圖像處理軟件,如Photo Shop、Windows畫圖工具等在計算機中使用的圖像處理工具。在手機中有一個比較流行的軟件,在拍好照片后可以對個人照片進(jìn)行智能美化,這些軟件都是應(yīng)用軟件缺少編程需要的接口,這些軟件處理圖像后只是給出結(jié)果,無法取到程序處理所需要的中間參數(shù),只能局限于最后的結(jié)果展示,如果只是單純的圖像制作, Photo Shop類的圖像處理工具已經(jīng)足夠了。但是對于圖像識別、機器視覺等,需要對圖像內(nèi)容做出判斷,用類似于Photo Shop這樣的圖像處理軟件就無法完成了,因為無法集成到所編寫的程序當(dāng)中。OpenCV是一個圖像處理函數(shù)庫,其中包涵了對于計算機操作系統(tǒng)和計算機語言編譯平臺支持的API接口以及源碼庫,可以在編寫的程序中去處理圖像,不但可以得到圖像處理后的結(jié)果,還可以對圖像中間的處理過程進(jìn)行控制,可以對圖像中的內(nèi)容用自己編寫的程序代碼進(jìn)行判定,實現(xiàn)識別操作。

      4 學(xué)習(xí)OpenCV的基礎(chǔ)

      C和C++語言在工科類專業(yè)中一般設(shè)置必修課程,C語言常作為一門基礎(chǔ)的編程語言來教,有的學(xué)生覺得C比較容易,有的學(xué)生感覺比較難,這個取決于每個人對計算機語言的理解能力與對計算機語言的興趣,C和C++的區(qū)別在于C++增加了類,支持面向?qū)ο缶幊?。新版OpenCV函數(shù)庫是基于C++的,打開源代碼的文件夾可以看到許多以.cpp結(jié)尾的C++代碼文件,所以對于C和C++的掌握情況直接關(guān)系到對OpenCV的學(xué)習(xí)。

      5 OpenCV的運行環(huán)境

      在學(xué)習(xí)每種計算機語言之前都要對每種計算機語言的IDE(Integrated Development Environment,集成開發(fā)環(huán)境)進(jìn)行安裝和配置,集成開發(fā)環(huán)境不只是用來編輯程序代碼,還包括了對代碼的編譯、調(diào)試與運行等。如Java語言,在Windows操作系統(tǒng)中Java語言最簡單的編輯環(huán)境是記事本,對于Java的編譯與運行需要用到命令窗調(diào)用所安裝JDK(Java Development Kit,Java開發(fā)包)中的編譯程序與運行環(huán)境,如果是集成的IDE,如Eclipse、MyEclipse等,點擊IDE上的運行或是調(diào)試按鈕,就可以在IDE中的結(jié)果輸出窗口上直接查看運行結(jié)果。OpenCV是用C和C++語言所編寫的圖像處理函數(shù)庫,它沒有自己獨立的IDE,所以它需要借助其他編程語言的IDE進(jìn)行編寫和調(diào)用,如Microsoft Visual Studio、QT Creator等。

      配置開發(fā)環(huán)境是學(xué)習(xí)OpenCV中重要的一步,但是這個過程相對于初學(xué)者來說有些復(fù)雜。首先,要從網(wǎng)上下載并安裝計算機語言的開發(fā)環(huán)境,如微軟的Visual Studio、QT集成開發(fā)環(huán)境等。其次,下載并安裝OpenCV的安裝包,安裝OpenCV是一個解壓的過程。下一步,就是對開發(fā)環(huán)境的配置,其中要對系統(tǒng)變量、包含目錄、附加依賴項進(jìn)行配置。然后進(jìn)行調(diào)試運行。在對開發(fā)環(huán)境配置時,為保證OpenCV庫與本地開發(fā)環(huán)境兼容性更好,最好使用CMaker(Cross Platform Make)在本地環(huán)境中對OpenCV源代碼重新編譯。

      6 OpenCV中的Hello World

      在學(xué)習(xí)C或是java語言時,常常會有一個重要的標(biāo)志就是‘Hello World!,標(biāo)志著系統(tǒng)配置完成并且整個IDE環(huán)境運行正常,編譯系統(tǒng)成功的編譯了所寫的代碼,并且在操作系統(tǒng)中執(zhí)行成功。OpenCV中這個標(biāo)志有所不同,它的‘Hello World!是在IDE中編寫好代碼后,調(diào)用OpenCV中的函數(shù)打開一幅代碼中指定的圖片并顯示到新建的窗口中,標(biāo)志著IDE中的參數(shù)是正確的,這是進(jìn)行圖像操作的重要一步。

      7 OpenCV圖像像素操作

      對于數(shù)值的計算是第一步一般輸出一個結(jié)果,在學(xué)任何一門計算機語言時會有一個很好的例子“計算器”,那圖像如何去表示?其實圖像是多個結(jié)果的一個集合,就像在C語言中打出星號所組成的菱形,每一個星號可以比喻成一個圖像中的像素點。對于圖像處理過程中常常見到的有3種:第一種,RGB圖像,彩色的圖像,每個像素點由3個數(shù)值表示。第二種,灰度圖像,像以前的黑白電視機,每個像素點由一個數(shù)值就可以表示。第三種,二值圖像,每個像素點由一個數(shù)值表示。在OpenCV中有多種方法可以對圖像進(jìn)行操作,其中比較方便的就是利用cv::Mat類,對圖像進(jìn)行打開、顯示、修改和保存,這也是進(jìn)行圖像操作的重要一步。

      8 OpenCV的文檔

      大家在OpenCV官網(wǎng)提供的文檔中可以得到更多幫助。在OpenCV的文檔中包括了對組件結(jié)構(gòu)的介紹,了解OpenCV的組件結(jié)構(gòu)對學(xué)習(xí)OpenCV是十分有利的,該介紹包括了一系列的動態(tài)或靜態(tài)庫,如矩陣數(shù)組的定義、圖像處理模塊包含的內(nèi)容、視頻分析所需要的算法、基本的多視覺算法、外部特征的檢測類、物體的檢測類、UI類的使用、圖像算法的硬件加速等,在編寫代碼時可以查找其類中對象所包含成員和方法。一些OpenCV圖書所帶的光盤中或互聯(lián)網(wǎng)上網(wǎng)友提供的圖像處理代碼,由于編程使用的操作系統(tǒng)或編譯環(huán)境不同,有些代碼會包含未知的頭文件或者缺少頭文件,代碼本身并沒有錯誤,但總是編譯出錯,了解了這些知識后在編程時,有利于定位在程序中所引用的文件所屬的位置,從而有效地處理文件引用出現(xiàn)的問題。

      無論對什么樣的物體進(jìn)行識別,圖像識別過程基本是不變的,包括:圖像預(yù)處理、圖像分割,特征提取、判斷匹配、輸出結(jié)果。圖像預(yù)處理中會用到圖像的灰度化、圖像的二值化、去除圖像的噪聲等算法。特征提取中會用到圖像變換、圖像邊緣檢測等算法。判斷匹配中用到直方圖、投影等算法。圖像分割有3種:基于閾值的分割、基于區(qū)域分割、基于邊緣的分割[5]。在OpenCV的文檔中都詳細(xì)提供了基本算法類的定義與方法,通過OpenCV的代碼庫中的基本算法類或幾個基本算法類的組合可以實現(xiàn)以上所列算法的所有功能。

      9 結(jié)語

      據(jù)統(tǒng)計,一個人獲取的信息大約有75%來自視覺 [6]。在工業(yè)4.0的時代里機器也需要有自己的視覺系統(tǒng),基于圖像處理的機器視覺在人工智能領(lǐng)域會得到更廣泛的應(yīng)用,如:無人駕駛汽車、智能機器人、智能安防系統(tǒng)等。OpenCV是一個進(jìn)入這些行業(yè)的重要工具之一,圖像處理的學(xué)習(xí)過程是一個循序漸進(jìn)的過程,希望學(xué)習(xí)者在OpenCV的基礎(chǔ)上提高對于圖像處理的認(rèn)識及對圖像處理的技術(shù)水平。

      參考文獻(xiàn)

      [1] 姚楠,耿奇.基于MATLAB GUI 的車牌自動識別系統(tǒng)設(shè)計[J].軟件,2016,37(3):44-46.

      [2] 李珊珊,劉純.基于FPGA 車牌識別系統(tǒng)的設(shè)計與實現(xiàn)[J].軟件,2012,33(3):72-74.

      [3] (加)Robert Laganière,著.OpenCV計算機視覺編程攻略[M].2版.相銀初,譯.北京:人民郵電出版社,2015.

      [4] 陳雪嬌.基于OpenCV的計算機視覺技術(shù)研究[J].電腦知識與技術(shù),2015(30):137-138,141.

      [5] 張家怡.圖像識別的技術(shù)現(xiàn)狀和發(fā)展趨勢[J].電腦知識與技術(shù),2010(21):6045-6046.

      [6] 賈永紅.數(shù)字圖像處理[M].武漢:武漢大學(xué)出版社,2003:1.

      猜你喜歡
      函數(shù)庫圖像識別圖像處理
      用于優(yōu)化雷達(dá)信號處理的VSIPL函數(shù)庫
      基于Python的開源GIS應(yīng)用開發(fā)
      Scratch求最值和平均值
      電腦報(2020年34期)2020-09-12 14:03:42
      基于Resnet-50的貓狗圖像識別
      電子制作(2019年16期)2019-09-27 09:34:50
      高速公路圖像識別技術(shù)應(yīng)用探討
      基于BB60C的IQ數(shù)據(jù)采集與存儲系統(tǒng)設(shè)計
      圖像識別在物聯(lián)網(wǎng)上的應(yīng)用
      電子制作(2018年19期)2018-11-14 02:37:04
      機器學(xué)習(xí)在圖像處理中的應(yīng)用
      電子制作(2018年18期)2018-11-14 01:48:20
      圖像識別在水質(zhì)檢測中的應(yīng)用
      電子制作(2018年14期)2018-08-21 01:38:16
      模糊圖像處理,刑事偵查利器
      银川市| 灵台县| 陇南市| 德安县| 剑阁县| 高邑县| 成安县| 德安县| 宿州市| 阿尔山市| 邓州市| 黎平县| 平利县| 白水县| 皮山县| 温泉县| 临洮县| 罗定市| 河津市| 汪清县| 通辽市| 广平县| 曲阳县| 中宁县| 岐山县| 资兴市| 合山市| 乐山市| 长沙县| 恩平市| 怀化市| 万宁市| 宁强县| 赣州市| 马山县| 建水县| 茶陵县| 遂川县| 天津市| 雷山县| 宜君县|