1. 程式人生 > >開始記錄每天的學習

開始記錄每天的學習

就想著自己能向大神們看齊,通過每天寫部落格來記錄自己每段時間內所學習的東西,以此來督促自己學習吧。
…………………………………………………………………………………………………………
這段時間內主要是想著把之前比賽的無人機巡線在沒有學長的幫忙下自主完成。之前採用的方案為:用TK1來處理由攝像頭捕獲到的視訊資訊,通過顏色檢測和二值化和一系列濾波從背景中提取出飛機所需要識別路徑。然後通過串列埠傳送訊號給stm32板子。接收到TK1傳送到的資訊後,模擬遙控器訊號給飛控程式。從而達到無人機巡線的目的。但是能力有限,自己寫的識別演算法不是很穩定,在不同的光線環境下容易受到干擾,識別的效果不是很好。所以後來採用電賽小夥伴們使用過的openmv。之前已經大概瞭解過了openmv 的開發環境,從今天開始記錄學習。(因為是學到一半感覺自己的學習效率很低才想到寫部落格來督促自己的,就不從頭來記錄了。)
…………………………………………………………………………………………………………

17 09 11學習日記

從尋找小球的例程裡面引出的find_blobs函式。find_blobs的內容為
image.find_blobs(thresholds, roi=Auto, x_stride=2, y_stride=1, invert=False, area_threshold=10, pixels_threshold=10, merge=False, margin=0, threshold_cb=None, merge_cb=None)
函式實現效果的重點還是對於想要提取出來的顏色的閾值選定。在硬體提供的IDE中有方便修改閾值的工具。

find_blobs物件返回的是多個blob的列表。(注意區分blobs和blob,這只是一個名字,用來區分多個色塊,和一個色塊)。 列表類似與C語言的陣列,一個blobs列表裡包含很多blob物件,blobs物件就是色塊,每個blobs物件包含一個色塊的資訊。

blob有多個方法:

blob.rect() 返回這個色塊的外框——矩形元組(x, y, w, h),可以直接在image.draw_rectangle中使用。

blob.x() 返回色塊的外框的x座標(int),也可以通過blob[0]來獲取。

blob.y() 返回色塊的外框的y座標(int),也可以通過blob[1]取。

blob.w() 返回色塊的外框的寬度w(int),也可以通過blob[2]來獲取。

blob.h() 返回色塊的外框的高度h(int),也可以通過blob[3]來獲取。

blob.pixels() 返回色塊的畫素數量(int),也可以通過blob[4]來獲取。

blob.cx() 返回色塊的外框的中心x座標(int),也可以通過blob[5]來獲取。

blob.cy() 返回色塊的外框的中心y座標(int),也可以通過blob[6]來獲取。

blob.rotation() 返回色塊的旋轉角度(單位為弧度)(float)。如果色塊類似一個鉛筆,那麼這個值為0~180°。如果色塊是一個圓,那麼這個值是無用的。如果色塊完全沒有對稱性,那麼你會得到0~360°,也可以通過blob[7]來獲取。

bblob.code() 返回一個16bit數字,每一個bit會對應每一個閾值。

如果這個色塊是紅色,那麼它的code就是0001,如果是藍色,那麼它的code就是0010。注意:一個blob可能是合併的,如果是紅色和藍色的blob,那麼這個blob就是0011。這個功能可以用於查詢顏色程式碼。也可以通過blob[8]來獲取。