基于OpenCV的移動物體檢測和目標跟蹤

電腦雜談  發布時間:2020-02-14 09:01:29  來源:網絡整理

opencv目標識別程序_opencv識別_opencv識別特定物體

無人機的今后在于機器視覺,而機器視覺是離不開的,也就是說無人機的今后離不開圖像處理,去年電賽的經歷,讓我為此深有感受,包括電賽的尋線跟追小車,我們都是使用的openmv,首先我要承認openmv的確不錯,至少在色塊檢測中給了我們多大的忙,關鍵是易于上手,調試方便快捷。但是其處理性能實在不敢恭維,尤其是做人臉辨識,手勢識別,光流定點之類的,性能不夠用,我尤其是想做特征點測試的,但是openmv根本實現不了這些高大上的功能,而且距離也受限制。思考再三我們準備采取樹莓派,但是實際測試尤其是跑光流的之后,也是非???,那就很不用說人臉辨識和特點點評估等等的了。目前看來只有使用手機處理了,但是電腦在這次的電賽中通常是不允許使用的,如果是真愛,你就不會為了比賽而比賽,所以我們今天的opencv地面站就誕生了。

視頻鏈接:

2018年四軸飛行器串級PID姿態控制_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili圖標2018年四軸飛行器串級PID姿態控制_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili圖標2018年四軸飛行器姿態解算AHRS和IMU_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili圖標

這就是目前地面站所整合的幾個功能。大家不要先看這幾個功能,和openmv比還是非常強悍的。尤其是體系3和方式4,我可以不誠實的說,這個科技尚未是現今網上開源當中效果較好的了。目前我開放了地面站模式3的用途供大家使用,實現的功能就是鼠標單擊感興趣物體,鼠標選中到什么位置飛機就飛到什么位置,再也不用考慮到光線跟形狀的差別了,其特點不知道比甩了簡潔的線條檢測幾條街,具體介紹請往下看。

1要連接USB或者USB接口的圖傳接收機

2在地面站打開運行之前,電腦需要先連接串口4(COM4),打開設備管理器查看com4是否正確開啟,否則程序能夠正常運行??梢允褂肬SB轉TTL模塊,或者數傳接口。上位機數據發送的占空比設置為115200,因此數傳接口的信噪比也需要設置為115200,否則接收數據會出現亂碼。

opencv目標識別程序_opencv識別特定物體_opencv識別

3地面站功能展示僅限于模式3opencv目標識別程序,鼠標選取感興趣物體,地面站通過串口把目標物體的坐標發送出來。追蹤區別于camshift,效果比camshift要好的多,檢測距離可以超過幾十米。

開發者可以用這個地面站來進行高空跟蹤,目標定位。

推薦:

圖傳接收機-->牛牛航模5.8G圖傳手機接收機 ,

圖傳發射機-->熊貓發射機5.8G

圖傳-->彈弓

注意:圖傳測試的之后建議在空曠的戶外,效果很好,室內也是可以的,但是鑒于墻壁反射的緣由圖像會不太穩定

opencv識別特定物體_opencv目標識別程序_opencv識別

通過測試,程序無論是在無人機運動狀況下抑或在靜止狀態下,追蹤效果都更穩定。

注意我們的主要任務是圖像處理,提取目標數據opencv目標識別程序,至于你怎么用數據來控制飛機飛行就靠你自己發揮了,不過我們也簡單實現了一個點那里飛哪兒的飛控功能。

地面站通訊協議:UAV地面站每隔10ms,發送一組字符串char[10]={‘s’,,,,’#’},波特率115200

Char[0]=’s’,Char[9]=’#’為校驗字符

Char[1],char[2],分別代表目標中心坐標X的高8位和低8位 (16進制表示)

char[3],char[4]分別代表目標中心坐標Y的高8位和低8位(16進制表示)

剩余其他字符暫時保留。

opencv目標識別程序_opencv識別特定物體_opencv識別

目標追蹤代碼編寫

考慮到部分同學可能不知道怎么修改基于無人機地面站追蹤的飛控程序,特此做了一個比較具體的教程。代碼已經順利移植到飛控上,而且就在今天3月25號已經測試了,代碼可用,但是PID控制參數必須改進。僅供各位參考。以下程序適合市面上所有開源的無人機飛控。大家只應該把一個c文件和一個h頭文件添加到你的飛控程序,然后根據以下的方法設置即可。

第一步向飛控程序上面添加c文件和.h頭文件

這兩個文件只是小編整理的哦,花了我每天時間呢??梢灾苯犹砑拥饺魏伍_源飛控,不依賴于任何飛控系統。當然變量跟函數的命名不能和你的自身飛控代碼定義的沖突哈!其實這個代碼我們電賽教學視頻上面講解的巡線跟追蹤模式一樣,巡線跟追車其都是屬于位置控制。

第二步向飛控程序上面添加串口接收程序:

opencv識別特定物體_opencv識別_opencv目標識別程序

我這里以串口5為例。

首先在main函數初始化程序部分先初始化串口

接下來寫串口接收中斷部分

好啦,寫到這個位置我們的串口數據接收部分就完成了,那么接下來就該寫我們拿這個數據來進行位置控制,

第三步 找到你的飛控程序的任務調度部分,添加第一步.c文件上面的位置控制函數

第四部姿態控制部分

找到你的飛控程序的串級姿態控制的的外環(角度環),添加我們的姿態控制視角


本文來自電腦雜談,轉載請注明本文網址:
http://www.772070.live/a/jisuanjixue/article-140716-1.html

    相關閱讀
    發表評論  請自覺遵守互聯網相關的政策法規,嚴禁發布、暴力、反動的言論

    熱點圖片
    拼命載入中...
    天津快乐十分20选8技巧