• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于OpenCV圖像處理系統(tǒng)的開發(fā)與實(shí)現(xiàn)

    2019-03-21 11:39:12劉培軍馬明棟王得玉
    關(guān)鍵詞:菜單欄圖像處理界面

    劉培軍,馬明棟,王得玉

    (1.南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京 210003;2.南京郵電大學(xué) 地理與生物信息學(xué)院,江蘇 南京 210023)

    0 引 言

    在計(jì)算機(jī)技術(shù)如此成熟的今天,圖像處理理論與技術(shù)已經(jīng)得到了較為全面的發(fā)展并在持續(xù)不斷的優(yōu)化創(chuàng)新中,尤其在人工智能、航空航天、工業(yè)部件檢測、交通、醫(yī)學(xué)等領(lǐng)域得到了廣泛應(yīng)用[1-2]。目前國內(nèi)外都有許多優(yōu)秀的圖像處理系統(tǒng)軟件,但由于這些系統(tǒng)的開發(fā)環(huán)境,應(yīng)用目的和側(cè)重點(diǎn)不同,在實(shí)際的圖像處理過程中都出現(xiàn)了不同程度的問題,如通用性差,功能缺失,圖像處理速度慢,不能處理多種圖像格式,等等。因此根據(jù)目前研究與學(xué)習(xí)的要求設(shè)計(jì)出一種圖像處理系統(tǒng)是一種較為可行的方法。

    文中詳細(xì)介紹了在Qt Creator集成開發(fā)環(huán)境下,基于OpenCV進(jìn)行面向?qū)ο缶幊?,開發(fā)的一種功能齊全,運(yùn)行速度快,可擴(kuò)展性強(qiáng),可以在不同系統(tǒng)上運(yùn)行的圖形處理系統(tǒng)。其中OpenCV計(jì)算機(jī)視覺庫作為常用的圖像處理庫之一,功能強(qiáng)大,支持目前先進(jìn)的圖像處理技術(shù)且體系十分完善,幾乎涵蓋了近十年內(nèi)的主流算法[3]。

    1 OpenCV在Qt Creator環(huán)境下的配置

    1.1 OpenCV

    如今市面上存在眾多處理圖像和視頻的軟件和庫,其中OpenCV、CxImage、CImg、FreeImage是幾種常用的圖像處理庫,但是對于期望自己開發(fā)圖像處理軟件的人而言,OpenCV庫是最好的選擇。OpenCV(open source computer vision)是一個(gè)開源可跨平臺(tái)的圖像及視頻分析庫,包含500多個(gè)優(yōu)化過的算法[4-5]。自O(shè)penCV2發(fā)布后,相較于1.0版本其帶來了重要的變化,尤其是使用了嶄新的C++接口[6]。自版本2.2開始,OpenCV被劃分了多個(gè)模塊。各個(gè)模塊的名稱及功能如表1所示。

    表1 OpenCV庫的主要模塊

    1.2 開發(fā)環(huán)境配置

    OpenCV是一個(gè)跨平臺(tái)計(jì)算機(jī)視覺庫,需要將它編譯成二進(jìn)制的靜態(tài)庫和動(dòng)態(tài)庫后,才可以在IDE下直接調(diào)用圖像處理函數(shù)。編譯OpenCV需要用到開源跨平臺(tái)自動(dòng)化構(gòu)建工具CMake,它可以跨平臺(tái)生成各種makefile或project文件支持用各種編譯工具生成可執(zhí)行程序或鏈接庫。Qt Creator支持CMake,因此可以用Qt Creator在圖形界面中對OpenCV進(jìn)行編譯。下面是開發(fā)環(huán)境的配置過程。

    (1)安裝CMake,安裝時(shí)選擇為所有用戶添加系統(tǒng)路徑,Qt Creator可以自動(dòng)找到CMake,安裝MinGW版本的Qt Creator,安裝OpenCV。

    (2)打開Qt Creator,工具→選項(xiàng)→構(gòu)建和運(yùn)行→CMake,確認(rèn)Qt成功找到CMake,否則手動(dòng)指定CMake的路徑。

    (3)在Qt中點(diǎn)擊[Open Project],打開OpenCV安裝目錄下的CMakeLists.txt,點(diǎn)擊[Configure Project]按鈕。進(jìn)入[項(xiàng)目],編譯構(gòu)造配置選擇Release,待CMakeLists.txt讀取完畢,找到CMAKE_INSTALL_PREFIX,設(shè)置編譯完成后的輸出路徑。然后進(jìn)行構(gòu)建步驟,勾選install,點(diǎn)擊開始構(gòu)建。最后顯示“正常退出”,表示OpenCV已經(jīng)編譯完成。文中設(shè)計(jì)的圖像處理系統(tǒng)采用Qt 5.6.0與OpenCV 2.4.12搭建開發(fā)環(huán)境。

    (4)將編譯完成文件目錄下的bin文件夾路徑添加到系統(tǒng)環(huán)境變量Path中。

    基于以上步驟,開發(fā)環(huán)境配置完成,在新建Qt項(xiàng)目.pro文件中添加頭文件路徑和靜態(tài)庫路徑以此來使用OpenCV中的圖像處理函數(shù)。

    2 系統(tǒng)總體設(shè)計(jì)

    該系統(tǒng)主要由兩個(gè)核心模塊組成:圖像處理模塊與顯示模塊。圖像處理模塊作為系統(tǒng)最為重要的功能部分,主要負(fù)責(zé)接收用戶指令針對圖像進(jìn)行特定處理[7];顯示模塊即在界面上顯示原始圖像或處理完成后的圖像。除了上述兩大功能模塊外,圖像的載入與保存也是該系統(tǒng)必不可少的部分。系統(tǒng)采用Qt Creator中的可視化圖像編輯器進(jìn)行UI(user interface)設(shè)計(jì),界面簡潔清晰,具有良好的交互性[8]。通過對話框操作的形式就可以實(shí)現(xiàn)對圖像進(jìn)行相應(yīng)的處理,而無需考慮具體實(shí)現(xiàn)原理,簡化了處理圖像的工作流程,提高了工作效率。

    2.1 系統(tǒng)功能

    系統(tǒng)的基本功能主要包含文件處理、基本圖像處理、形態(tài)學(xué)處理、領(lǐng)域處理、點(diǎn)的處理等。

    (1)文件處理:目前圖像文件的格式有許多種,文件處理主要是對這些不同格式的圖像文件進(jìn)行打開、恢復(fù)圖像,關(guān)閉、保存當(dāng)前窗口圖像。系統(tǒng)對于打開文件應(yīng)有兩種方式,一是在系統(tǒng)“文件”菜單欄下通過“打開”按鈕對圖像文件進(jìn)行載入,二是將圖像拖入系統(tǒng)顯示窗口進(jìn)行打開。

    (2)基本圖像處理:在圖像處理的過程中應(yīng)先對圖像進(jìn)行一些基本的處理,比如灰度化圖像,紅(R)、綠(G)、藍(lán)(B)通道的提取,以及圖像二值化,其常見算法如OSTU法、百分比閾值(P-Tile)法等。

    (3)形態(tài)學(xué)處理:膨脹與腐蝕是兩種最基本也是最重要的形態(tài)學(xué)運(yùn)算,可以消除圖像噪聲,尋找圖像中明顯的極大極小值區(qū)域,分割獨(dú)立圖像元素,以及連接相鄰元素[9]。運(yùn)用膨脹與腐蝕這兩個(gè)基本操作,可以實(shí)現(xiàn)較高級的形態(tài)學(xué)變換,如開運(yùn)算、閉運(yùn)算、頂帽與黑帽等。

    (4)領(lǐng)域處理:圖像在采集,傳輸?shù)倪^程中不可避免地會(huì)受到外界的干擾產(chǎn)生各種噪聲和失真。為了抑制噪聲,盡量保持圖像細(xì)節(jié)特征,需要對圖像進(jìn)行平滑處理[10]。邊緣檢測是領(lǐng)域處理中極為重要的一環(huán),大多數(shù)情況下在平滑處理的基礎(chǔ)上進(jìn)行,其主要目的是為了標(biāo)識圖像中亮度變化明顯的部分[11]。圖像處理中有多種邊緣檢測算子,如Canny算子、Sobel算子、拉普拉斯算子等。

    (5)點(diǎn)的處理:包含幾種常用的幾何變換操作,如水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、各種角度旋轉(zhuǎn)等。此外還包含了圖像直方圖、直方圖均衡化等基本圖像增強(qiáng)操作。

    (6)自定義閾值化:圖像閾值化是一種最常用的圖像分割方法[12],所謂閾值化就是當(dāng)圖像像素點(diǎn)矩陣中的每個(gè)像素點(diǎn)的灰度值小于自定義閾值T時(shí)為0(黑色),大于閾值T時(shí)為255(白色),使圖像轉(zhuǎn)化為二值(黑白)圖像。

    (7)圖像變換:包括顏色空間變換與圖像正交變換。在圖像處理中,不同的顏色空間有著不同的特性,為了便于分析各種圖像的特性,在實(shí)際中需要對圖像進(jìn)行不同顏色空間的轉(zhuǎn)換。常見的顏色空間有RGB、HSV、Lab、YCrCb等。圖像的正交變換主要是將圖像由空間域轉(zhuǎn)換到另一個(gè)域進(jìn)行更方便有效的分析與處理,如傅里葉變換是將圖像轉(zhuǎn)變?yōu)轭l域信號,進(jìn)而對頻譜進(jìn)行分析[13]。除了傅里葉變換以外,還有小波變換、K-L變換等。

    (8)其他圖像處理:包含一些特定的角點(diǎn)檢測算法,霍夫變換的直線與圓檢測,文字提取,亮度對比度調(diào)整等一些綜合圖像處理。

    2.2 界面設(shè)計(jì)

    在設(shè)計(jì)界面時(shí),系統(tǒng)界面應(yīng)簡潔清晰,方便用戶使用。根據(jù)系統(tǒng)功能需求,設(shè)計(jì)相應(yīng)的界面功能模塊,主要有菜單欄、圖像顯示模塊,以及其他一些功能顯示模塊。菜單欄中主要是圖像的打開、關(guān)閉與保存,以及相應(yīng)的圖像處理功能菜單。圖像顯示模塊是顯示打開圖像,以及顯示處理完成后的圖像。其他顯示模塊,可以設(shè)計(jì)為顯示圖像文件的直方圖,以及圖像的傅里葉變換等,方便用戶對圖像進(jìn)行研究。在設(shè)計(jì)系統(tǒng)界面的過程中應(yīng)遵循以下幾點(diǎn):

    (1)菜單欄應(yīng)和功能設(shè)計(jì)保持一致,菜單名稱與相應(yīng)圖像處理功能要一一對應(yīng),不能出現(xiàn)菜單名稱與處理功能不匹配的現(xiàn)象。

    (2)在菜單層次設(shè)計(jì)中,子菜單劃分應(yīng)與上一層菜單呈包含關(guān)系,方便用戶能快速找到相應(yīng)的圖像處理功能。

    (3)各顯示模塊都能準(zhǔn)確顯示。

    3 系統(tǒng)實(shí)現(xiàn)

    文中的圖像處理系統(tǒng)是在Windows7平臺(tái)下進(jìn)行開發(fā),采用的開發(fā)環(huán)境為Qt Creator。Qt Creator是一款功能十分強(qiáng)大的集成開發(fā)環(huán)境,主要包含項(xiàng)目模板生成、代碼編輯、UI設(shè)計(jì)、QML界面編輯等豐富功能[8]。Qt Creator采用C++面向?qū)ο笤O(shè)計(jì),具有跨平臺(tái)、界面設(shè)計(jì)美觀等特點(diǎn),因此得到了廣泛的應(yīng)用。

    在系統(tǒng)實(shí)現(xiàn)的過程中,首先在Qt Creator集成開發(fā)環(huán)境中新建Qt Widgets Application窗體項(xiàng)目,該項(xiàng)目中包含了一個(gè)基于Qt設(shè)計(jì)師的主窗體,因此可以用于開發(fā)傳統(tǒng)基于部件的窗體界面程序。

    在窗體項(xiàng)目創(chuàng)建的過程中,在類信息設(shè)置界面,有三個(gè)最為關(guān)鍵的基類選擇,分別是QMainWindow、QWidget、QDialog。

    QMainWindow類:基于主窗口類的程序,一般用于較為復(fù)雜的應(yīng)用程序。它提供了一個(gè)有菜單欄、工具欄、狀態(tài)欄以及多個(gè)可停靠的工具對話框的主應(yīng)用程序窗口。

    QWidget類:最簡單最基本的窗體程序,里面可以放置多個(gè)控件實(shí)現(xiàn)程序功能[14]。

    QDialog類:是對話框窗口的基類,一般用于彈窗來執(zhí)行短期任務(wù),也可以用于主界面顯示,但沒有菜單欄、工具欄、狀態(tài)欄等。

    基于以上敘述,該系統(tǒng)采用QMainWindow類來實(shí)現(xiàn)主體界面的實(shí)現(xiàn),打開項(xiàng)目中ui文件,Qt Creator會(huì)自動(dòng)進(jìn)入設(shè)計(jì)模式,可以對圖像界面進(jìn)行可視化編輯。經(jīng)過對系統(tǒng)功能分析,以及界面設(shè)計(jì)需求,系統(tǒng)界面如圖1所示。

    圖1 系統(tǒng)界面

    3.1 圖像輸入輸出與保存

    從外部文件載入圖像,圖像處理完成后結(jié)果的顯示以及存儲(chǔ),要用到OpenCV2中的imread、imshow、imwrite函數(shù)[4]。imread函數(shù)用于讀取一幅圖像,并將其轉(zhuǎn)換成一個(gè)Mat對象,它有兩個(gè)參數(shù),其函數(shù)原型為:

    Matimread(const string& filename, //要加載的圖像,一般使用絕對路徑

    int flags=1//指定加載圖像顏色類型,flags>0 三通道彩色圖像

    //flags=0灰度圖像

    //flags<0包含Alpha通道加載的圖像

    );

    函數(shù)imshow是在特定窗口上顯示圖像,其函數(shù)原型為

    voidimshow(const string& winname, //窗口名稱

    InputArray image //要顯示的圖像

    );

    函數(shù)imwrite是將圖像保存到指定目錄路徑,其函數(shù)原型為

    bool imwrite(const string& filename, //寫入要保存圖像文件名

    InputArray img, //保存的圖像,類型為Mat

    const std::vector& params = std::vector() //特定格式保存的參數(shù)編碼,一般為默認(rèn)值

    );

    該圖像處理系統(tǒng)打開圖像如圖2所示。

    圖2 圖像系統(tǒng)展示

    3.2 圖像處理

    在圖像處理的過程中,根據(jù)對圖像處理目的的不同,一般先對圖像進(jìn)行預(yù)處理(平滑、灰度化、二值化),然后運(yùn)用各種圖像處理算法,比如形態(tài)學(xué)處理、邊緣檢測、幾何變換等。由于圖像處理算法過多,下面僅以大律法(OSTU)二值化為例,并在系統(tǒng)中顯示圖像處理后的結(jié)果,如圖3所示。

    Matmy_class::Get_OSTUThresholdIMG(Mat SrcImg3C)//大津法二值化

    {

    MatSrcGray;

    cv::cvtColor(SrcImg3C,SrcGray,CV_BGR2GRAY);

    doubleThre_value;

    int *HistGram=new int[256];

    IplImage SrcGray_1=IplImage(SrcGray);

    GetHistGram(&SrcGray_1,HistGram); //獲取直方圖

    Thre_value=GetOSTUThreshold(HistGram); //大津法

    MatthreIMG;

    threshold(SrcGray, threIMG, Thre_value,255,0); //圖像二值化

    SrcGray.release();

    Mat ReturnIMG3C;

    if(threIMG.channels()==1)

    {

    cvtColor(threIMG,ReturnIMG3C,CV_GRAY2BGR);

    }

    else

    ReturnIMG3C=threIMG;

    threIMG.release();

    return ReturnIMG3C;

    }

    圖3 大律法二值化結(jié)果

    3.3 系統(tǒng)測試與驗(yàn)證

    在3.1節(jié)與3.2節(jié)中,系統(tǒng)總體設(shè)計(jì)都已實(shí)現(xiàn),而系統(tǒng)測試與驗(yàn)證是系統(tǒng)開發(fā)過程中的最后階段,它是檢驗(yàn)一個(gè)系統(tǒng)是否滿足預(yù)期設(shè)計(jì)的必要手段。本節(jié)主要從界面交互性、功能模塊穩(wěn)定性、顯示模塊準(zhǔn)確性、擴(kuò)展性四個(gè)方面對該系統(tǒng)進(jìn)行測試與驗(yàn)證。

    (1)界面交互性。

    從上兩節(jié)可以看出該系統(tǒng)界面簡潔清晰,布局合理。打開菜單欄,菜單欄與子菜單欄按鈕名稱準(zhǔn)確,顯示規(guī)范,層次分明,方便用戶操作,有較好的交互性,符合界面設(shè)計(jì)要求。

    (2)功能模塊穩(wěn)定性。

    在處理圖形的過程中,系統(tǒng)各個(gè)處理功能均能正常運(yùn)行且運(yùn)行穩(wěn)定,反應(yīng)迅速,沒有出現(xiàn)程序意外關(guān)閉,崩潰等情況,有效提高了工作效率。由于圖像處理功能較多,下面列出了部分功能測試結(jié)果以及部分效果圖,如圖4所示。

    形態(tài)學(xué)處理:膨脹、腐蝕、開閉運(yùn)算、頂帽、黑帽圖像處理結(jié)果顯示準(zhǔn)確,達(dá)到設(shè)計(jì)要求。

    幾何變換:圖像在系統(tǒng)中能夠翻轉(zhuǎn),多角度旋轉(zhuǎn)與設(shè)計(jì)要求一致。

    邊緣檢測:系統(tǒng)中三種邊緣檢測算法,Sobel、Canny、Laplacian算子均能準(zhǔn)確實(shí)現(xiàn),符合預(yù)期設(shè)計(jì)。

    (3)顯示模塊準(zhǔn)確性。

    經(jīng)測試,系統(tǒng)圖像顯示模塊均能準(zhǔn)確顯示與處理功能相匹配的圖像,圖像直方圖與傅里葉變換圖也能準(zhǔn)確顯示。

    (4)擴(kuò)展性。

    在系統(tǒng)測試階段,為檢驗(yàn)系統(tǒng)是否具有良好的擴(kuò)展性,在系統(tǒng)中增添了油畫效果。如圖4(d)所示,該功能能正常工作,系統(tǒng)具有良好的擴(kuò)展性。

    圖4 測試效果

    4 結(jié)束語

    采用OpenCV研究開發(fā)的圖像處理系統(tǒng),實(shí)現(xiàn)了許多圖像處理方面的通用算法,可以滿足對圖像的大多數(shù)處理需求[15-16]。由于OpenCV具有非常高的通用性,并在Qt Creator下實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)與開發(fā),因此該系統(tǒng)具有較好的可擴(kuò)展性與可移植性。經(jīng)測試驗(yàn)證,該系統(tǒng)操作簡單,界面友好,能根據(jù)不同需求有效地處理不同格式的圖像,提高了工作效率。

    猜你喜歡
    菜單欄圖像處理界面
    國企黨委前置研究的“四個(gè)界面”
    機(jī)器學(xué)習(xí)在圖像處理中的應(yīng)用
    電子制作(2018年18期)2018-11-14 01:48:20
    基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
    模糊圖像處理,刑事偵查利器
    圖像處理技術(shù)的實(shí)戰(zhàn)應(yīng)用
    人機(jī)交互界面發(fā)展趨勢研究
    自編翻譯程序
    CHIP新電腦(2015年10期)2015-10-15 12:48:23
    手機(jī)界面中圖形符號的發(fā)展趨向
    新聞傳播(2015年11期)2015-07-18 11:15:04
    Photo Shop通道在圖像處理中的應(yīng)用
    河南科技(2014年1期)2014-02-27 14:04:06
    如何導(dǎo)出GIF動(dòng)畫?等
    峨边| 密云县| 新乐市| 萍乡市| 万州区| 新源县| 平阴县| 呼玛县| 木里| 汕头市| 封丘县| 新巴尔虎左旗| 罗江县| 湾仔区| 平顶山市| 合川市| 泸定县| 泰宁县| 英德市| 岗巴县| 阿拉善左旗| 尤溪县| 库车县| 禄劝| 都兰县| 利津县| 临清市| 温宿县| 和龙市| 阿合奇县| 佛学| 岑溪市| 伊宁县| 台北县| 龙南县| 三原县| 临清市| 保山市| 徐汇区| 陕西省| 太原市|