這段程式碼使用 OpenCV 來偵測視訊設備擷取的每一幀中標記的位置。根據標記的物理尺寸,它也可以進行姿勢估計。對於每個定義的標記,可以透過 UDP 以純文字形式取得資料。它會傳回物件相對於相機的旋轉平移,以及出現在相機影像上的物件 2D 質心的 XY 座標。如果標記不可見,則傳回的數字將為 NaN。
請注意,此代碼不使用時間資訊進行追蹤。
相反,它嘗試檢測標記並估計其在每個捕獲的幀中的姿勢。
.ini
語法。您需要一個具有cv2
和numpy
模組的標準 Python 環境。雖然程式碼是在 Mac 上使用 Python 2.7 和 OpenCV 3.4.1 開發的,但它也應該適用於 Python 3 和其他平台。以下是建立標記的幾個步驟: 1. 拍攝物件的照片並裁剪它。理想情況下,解析度應與您的相機相容。 2.,編輯配置文件,並確保它設定了以下行:
[General]
您可以在常規部分中保留幾乎所有相同的內容,但您需要校準相機!請閱讀此處以了解如何校準。新增標記時,您需要微調設置,因此請確保相機的影像可見。
camera_show_picture = 1
否則,新標記將作為新部分新增至設定檔。
標頭是標記的用戶友好名稱
[My custom marker]
指定檔案名稱和標記的實體尺寸:
marker_file_name = <File name in the same directory or full path>
marker_width = <Units are in mm.>
marker_height = <Units are in mm.>
設定新標記時,您需要變更以下設定:
marker_minimum_matching_distance = <Decrease it from 50>
marker_minimum_number_of_matches = <Set this to at least 4>
pose_estimation_running_average = <more than 1>
marker_minimum_matching_distance
與標記影像和相機之間的特徵相符的品質成反比。如果設定太高,將匹配標記之外的特徵,如果設定太低,則根本不會進行匹配。
姿勢估計需要marker_minimum_number_of_matches
。至少需要4個匹配點來計算translation
座標和rotation
角度。然而,變換所需的匹配越多,估計就越精確。如果設定得太高,姿態估計將僅在少數幀中起作用。
最後, pose_estimation_running_average
設定應該要對多少幀的位置資料進行平均。如果返回的位置太“不穩定”,請增加此數字。然而,一起平均的幀越多,延遲就越大。
此外,每個colour
通道可以是0
到255
之間的任何自然數。 marker_feature_colour_*
項目用於顯示標記影像和相機影像之間的良好品質匹配的位置。 marker_indicator_colour_*
設定確定單一指示器的顏色,顯示由顯示的匹配的平均值計算得出的座標。理想情況下,該指示符應始終位於標記內部,並作為centroid
在 UDP 資料包中傳回。
marker_feature_colour_R = <0...255>
marker_feature_colour_G = <0...255>
marker_feature_colour_B = <0...255>
marker_indicator_colour_R = <0...255>
marker_indicator_colour_G = <0...255>
marker_indicator_colour_B = <0...255>
python tracker_main.py
祝你好運!