在TQ2440實驗板上進行linux+qtopia++ov9650+opencv的圖像處理系統

       暑假的這兩三個星期一直學校在忙項目的事情。本人今年大三,自動化專業,在今年5月份的時候申請了學校的國家級大學生創新創業訓練計劃項目(簡稱國創),項目題目是:輪式雙目自主避障小型機器人研發。由於項目中需要用到很多模式識別方面的知識,而模式識別是研究生的一個研究方向,本科生很少有機會接觸。所幸的是我之前跟一位老師做過一個模式識別方面的項目,使用過OpenCV,而且使用的還算比較熟,再然後自己在學校的一個百步梯項目裏面承擔行人識別方面的工作,所以在這次國創中還是有一定模式識別的基礎。

      項目關鍵的地方主要是能夠在ARM9(TQ2440)上根據所採集(OV9650)的圖像和我預先給的模板,來判斷圖像中是否有我給的模板的內容在,有的話框出來。其實這個我在Windows下,最常用的就是兩個函數:cvMatchShapes(速度慢)和cvMatchTemplate(速度快)。但是由於這次的項目小車是運動的,所以目標相對小車,它的大小是變化的,但是形狀不會變。還有我們使用兩個攝像頭(這也是我們項目的創新點),對目標進行多角度的匹配。使用Opencv的函數來進行模式識別,在Windows平臺上基本基本沒有什麼值得考慮的地方,但是在嵌入式平臺上,一定的考慮處理器的速度問題。像現在我們arm9的頻率在500M左右,我以前在Windows上匹配一張圖像(使用cvMatchShapes)時間達到半分鐘,這樣子假如在ARM9上跑的話,非得進行算法優化什麼的。

     好了廢話不說,進入正題,我這個月最要任務是在TQ2440實驗板上把linux+qtopia++ov9650+opencv把平臺給搭建起來。下面說一下各個版本內容:

   TQ2440:S3C2440A芯片,4.3屏幕

    linux內核:2.6.30.4

   文件系統:qtopia_2.2.0

   攝像頭:OV9650

   OpenCV版本:OpenCV-2.1.0

   以下逐個分析平臺各部分的實現

   1、實驗板 。ARM9作爲圖像處理器,有點勉強,因爲它速度不夠快,特別是在圖像處理的浮點數運算方面。我購買的是TQ2440實驗板,但是我在這裏抱怨一下,TQ的網上資料不夠,不過多整體還不錯。反正實驗板大家看自己的愛好吧,因爲這個差別一般都不大。初學者入門更要選擇ARM9,資料齊全。

   2、內核。內核的話,我就不廢話了,現在使用2.6.30版本的還比較多。

   3、文件系統。我在文件系統的選擇上走了不少彎路。由於實驗板給的資料裏面,qt2的開發資料比較少(網上關於qt2的基本只有一本書:qtopia編程之道),但是網上qt4的資料有超多。所以一開始我就選擇了qtopia文件系統來編程,實驗板提供的qtopia文件系統比較穩定,qtopia是一個桌面應用。但是我在寫應用程序的時候,遇到好多問題,網上很少有解答的。然後我轉到qt4,qt4文件系統不大穩定,經常假死,而且在ARM9上跑qt4有點不大行。最坑爹的是天嵌提供的所有教程都是在Fedora10上面開發的,但是在Fedora10上面不能正常使用qt designer,那還怎麼在qt4上玩,於是我又轉回去使用qt2。也就是我所有後續的控制程序都是在qtopia上完成。有些人問,問什麼一定要使用qt的文件系統,因爲我寫的是有圖形操作界面的控制程序。

  4、攝像頭。攝像頭現在大部分使用OV9650,而且這個資料還比較多,他的像素不是很大,默認是320*240.

  5、OpenCV。OpenCV的話使用2.1版本的比較好,可能網上有使用2.3版本的,但是2.3版本變化比較大,特別是頭文件增加了一個文件件,編譯以後庫文件名字也不大相同。我以前也編譯過1.0版本的,但是1.0版本的使用需要配置pkg-config,而且1.01版本比較老,也不建議使用。

 

   移植opencv:我想大家推薦一篇文章:http://blog.csdn.net/embeddedman/article/details/7416934

   先到OpenCV官網下載linux版本的源碼,完全照着文章做就行了,只不過移植的是2.1版本。

   移植完以後就是配置頭文件路徑,在安裝目錄下有 bin,include,lib,share四個文件夾

 

進入include文件夾會見到我們熟悉的頭文件名,右擊任意一個頭文件,複製下所在路徑,像我的是/opt/EmbedSky/opencv/opencv_build/include,然後就是打開我們寫的Makefile文件,添加我們使用到的頭文件和庫文件,網上有些人說在.pro文件上添加,這也可以,但是由於我在qtopia上的.pro文件轉成的Makefile文件還需要修改,所以一直在Makefile上面修改,見圖說話(紅色爲我添加的那一部分):

   最後再把opencv安裝路徑下的5個庫文件拷貝到實驗板的/lib文件加下

 

 

項目初步效果圖(測試過OpenCV函數可用,把圖像轉成灰度圖):

 

發佈了65 篇原創文章 · 獲贊 38 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章