南京林業(yè)大學機械電子工程學院 王皖君 程玉柱 李趙春
基于OpenCV的圖像處理編程教學模式研究
南京林業(yè)大學機械電子工程學院 王皖君 程玉柱 李趙春
實踐教學是圖像處理課程教學的重要組成部分。本文將OpenCV引入到數(shù)字圖像處理的實踐教學當中,包括多種開發(fā)平臺的搭建、函數(shù)的調用、算法演示等。利用Visual Studio和Anaconda與OpenCV搭建PC端圖像處理平臺,同時搭建Android Studio與OpenCV手機端圖像處理平臺。通過兩種平臺教學實踐表明,此教學模式能顯著地提高教學效果。
OpenCV;圖像處理;教學模式
“數(shù)字圖像處理”課程理論性、實踐性都很強,理論上囊括了幾乎所有的數(shù)學理論。在實踐上,傳統(tǒng)采用Matlab軟件進行教學,Matlab雖然易于學生掌握,但不適合工程應用,與創(chuàng)新創(chuàng)業(yè)的教學思路不符,而采用C++語言教學,難度較大,短時間很難入門。
OpenCV是開源計算機視覺庫,由Intel公司主導開發(fā)的基于BSD開源發(fā)型的跨平臺計算機視覺庫,具有多種接口:C、C++、Java、Python等,可以運行在多種操作系統(tǒng)上。與Matlab相比,OpenCV的優(yōu)勢在于實時且高效,提升軟件算法的可應用性。同時可以利用GPU硬件,實現(xiàn)算法的并行加速處理。OpenCV實現(xiàn)了圖像處理和計算機視覺的很多通用算法,算法通過函數(shù)、類和模塊實現(xiàn),便于學生調用和練習,有助于提高圖像處理課程的實踐教學效果。
本文將OpenCV引入到“數(shù)字圖像處理”課堂教學中來,通過搭建PC端和手機端兩種開發(fā)平臺,生成兩套編程教學系統(tǒng),供學生上課進行二次開發(fā)和學習,提高課堂教學效果。通過編程教學,有助于圖像處理理論及算法的理解。
學生電腦主要配備微軟的Windows操作系統(tǒng),因此,PC端構建OpenCV教學系統(tǒng)主要基于Windows系統(tǒng)開發(fā)。本文通過Visual Studio與OpenCV構建C++圖像處理算法演示系統(tǒng),同時也用Anaconda與OpenCV構建Python圖像處理算法教學系統(tǒng)。
Visual Studio 2017是微軟于2017年3月8日正式推出的新版本,是迄今為止最具生產(chǎn)力的 Visual Studio 版本,其內建工具整合了.NET Core、Azure 應用程序、微服務、Docker 容器等所有內容,本文采用面向學生、開源和個人開發(fā)者的免費社區(qū)版。平臺搭建過程:首先下載Visual Studio和OpenCV,安裝VS2017,然后解壓OpenCV,得到預先編譯好的lib、bin、include等文件夾;打開Visual Studio,設置好庫文件路徑,電腦高級變量等。最后新建工程,輸入代碼,實現(xiàn)圖像處理算法,進行課堂演示。
Python是一種面向對象的解釋型計算機程序設計語言,Python是純粹的自由軟件, 源代碼和解釋器遵循 GPL協(xié)議。語法簡潔清晰,強制用空白符作為語句縮進。具有豐富和強大的庫。Anaconda可以看做Python的一個集成安裝,安裝它后就默認安裝了python、IPython、集成開發(fā)環(huán)境Spyder和眾多的包和模塊,非常方便。Python分成2.x版本和3.x版本,安裝方式通常有兩種,一種直接拷貝cv2/pyd文件,另一種利用conda install opencv 命令實現(xiàn)。
搭建Android與OpenCV圖像步驟如下:首先下載并安裝Android Studio2.1.2版本,并將下載好的OpenCV for Android解壓到固定文件夾。利用AS新建工程,并加載OpenCV模塊,至此,開發(fā)環(huán)境搭建成功,設置AVD,生成手機模擬器,測試程序的有效性。
圖1 不同平臺邊緣檢測效果圖
課堂采用理論和實踐交互式比較教學模式,學生預先安裝好PC端和手機端開發(fā)軟件,首先運行代碼演示,學生看到算法的實際效果,增強對理論認識,并掌握VS/Android與OpenCV編程技術,提供算法源代碼供學生二次開發(fā),作為課堂及課后練習。
本文以圖像Canny邊緣檢測為例,說明其教學過程。首先讀取彩色圖像,彩圖灰度化,并利用Canny算子對灰度圖進行邊緣檢測。實驗結果如圖1所示,圖1(a)為原始圖像,圖1(b)為VS2017邊緣檢測處理結果,圖1(c)為手機模擬器上的邊緣檢測結果。通過多種編程模式可以實現(xiàn)同樣的處理結果,使得學生更好地理解圖像處理算法的精髓。
理論可在實踐開發(fā)之前,也可在開發(fā)之后,或者交替進行。大致按照“理論、實踐、理論、分析、總結”的模式進行教學。在此過程中,需要教師既具有較強的理論功底,也具有實踐編程能力,將理論與編程代碼相結合的能力,對教師提出了更高的要求。
針對數(shù)字圖像實踐教學的特點,從教學方式和教學內容上,對該課程教學模式進行了探索研究。將OpenCV引入到教學中,使得學生高效利用電腦和手機平臺進行課程學習。讓學生采用不同的編程語言和開發(fā)平臺,通過比較實驗結果,加深對圖像處理算法的理解,顯著地提高教學質量。
[1]李樹濤,胡秋偉.LIShu-tao,等.OpenCV在”數(shù)字圖像處理”課程教學中的應用[J].電氣電子教學學報,2010,32(6):26-28.
[2]唐紅梅,王霞,李琦,等.數(shù)字圖像處理課程教學改革與實踐[J].河北工業(yè)大學學報(社會科學版),2006,21(4):8-10.
[3]朱娟花,吳昂.MATLAB在數(shù)字圖像處理課程教學中的應用[J].實驗室科學,2011,14(1):66-67.
[4]劉賢輝.基于OpenCV在移動端的圖像處理技術[J].電子技術與軟件工程,2017(9):70-70.
王皖君(1984—),男,博士,南京林業(yè)大學機械電子工程學院講師,主要研究方向:自動化。
南京林業(yè)大學2017年校級“教學質量提升工程”項目。
程玉柱(1980—),男,博士,南京林業(yè)大學機械電子工程學院講師,主要研究方向:圖像處理與模式識別。
李趙春(1978—),女,博士,南京林業(yè)大學機械電子工程學院副教授,主要研究方向:控制理論及控制工程。