本文概述了可在 Python 中使用 AI 視覺感測器的函數,以及如何使用它們的簡單說明。 您將學習使用AI視覺感測器過程中的四個步驟:獲取資料、查看獲取的物件數量、從資料中選擇要使用的物件以及從物件中提取哪些資料。
使用AI視覺感測器獲取視覺數據
為了從周圍環境收集訊息,人工智慧視覺感測器會拍攝目前所看到的影像。 它用指定的視覺簽名 識別的任何物件都儲存在 AI 視覺感測器內部,然後可供其他功能使用。
.takeSnapshot
任何 視覺簽名 都需要先進行配置,然後才能用作參數。 使用此方法時,將簽章參數指定為感測器的名稱,雙下劃線,後面接著 視覺簽章的 名稱。
AIVision6.takeSnapshot(AIVision6__Blue)
AIVision6.takeSnapshot(AIVision6__Red)
AIVision6.takeSnapshot(AIVision6__Green)
例子
在此範例中,採用 方法來搜尋與「Blue」 Visual Signature對應的任何物件。 然後,程式碼將顯示為該 視覺簽名找到的物件的計數。
int main() {
while (true) {
// 拍攝快照以檢查偵測到的物件
AIVision6.takeSnapshot(Blue);
// 清除螢幕/重置,以便我們可以顯示新資訊
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// 列印偵測到的物體數量
Brain.Screen.print("object count: %d", AIVision6.objectCount);
等待(0.5,秒);
}
}
確定要偵測到多少個物體
由於 .takeSnapshot
方法可以一次偵測具有相同 Visual Signature 的多個對象,因此您可以使用 .objectCount
屬性來了解已偵測到的物件數量。
Brain.Screen.Print(“%d”,AIVision1.objectCount)
例子
在此範例中, .objectCount
屬性用於檢查在上一個快照中是否至少偵測到 1 Visual Signature ,然後如果偵測到物件則列印 true 或 false。 如果偵測到物體,它會列印偵測到的物體總數。
int main() {
while (true) {
// 拍攝快照以檢查偵測到的物件
AIVision6.takeSnapshot(Blue);
// 清除螢幕/重置,以便我們可以顯示新資訊
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// 若找到對象,則列印數量
if (AIVision6.objectCount > 0) {
Brain.Screen.newLine();
Brain.Screen.print("物件數量: %d", AIVision6.objectCount);
}
等待(0.5,秒);
}
}
選擇要從中取得資料的對象
有兩種方法可以從 AI 視覺感測器中提取資料。 一種方法是使用 AIVision.largestObject
屬性直接從最近使用 .takeSnapshot
方法時檢測到的最大物件中檢索資訊。 另一種方法是使用 AIVision.objects[]
屬性並指定物件索引。
AIVision.largestObject
ai.vision.largest_object()
是存取最大物件的屬性。
int main() {
while (true) {
// 拍攝快照以檢查偵測到的物件
AIVision6.takeSnapshot(BlueBox);
// 清除螢幕/重置,以便我們可以顯示新資訊
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// 若找到物體,列印位置
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.largestObject[0].centerX);
} else {
Brain.Screen.print("無物件");
}
wait(0.5, 秒);
}
}
AIVision.objects
提取資料的另一種方法是指定要從中提取資料的物件的索引。 快照傳回偵測到的對象,其中最大對象首先位於索引 0 處,並依從最大到最小的順序對對象進行排序。
int main() {
while (true) {
// 拍攝快照以檢查偵測到的物件
AIVision6.takeSnapshot(BlueBox);
// 清除螢幕/重置,以便我們可以顯示新資訊
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// 若找到物體,列印位置
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("無物件");
}
wait(0.5, 秒);
}
}
選擇要從物件中提取哪些數據
每個物件有八個可以調用的屬性。
。高度
。寬度
.centerX
.centerY
.originX
.originY
。角度
.存在
。高度
.height
屬性傳回偵測到的物件的高度(以像素為單位)。
使用此程式碼傳回 .height
屬性:
AIVision6.objects[0].height
.height
屬性將傳回 0 到 240 像素之間的值。
。寬度
.width
屬性傳回偵測到的物件的寬度(以像素為單位)。
使用以下程式碼回傳 .width
屬性:
AIVision6.objects[0].width
.width
屬性將傳回 0 到 320 之間的值。
.centerX
.centerX
屬性報告偵測到的 視覺簽名中心的 X 座標。
使用以下程式碼回傳 .centerX
屬性:
AIVision6.objects[0].centerX
.centerX
屬性將傳回 0 到 320 之間的數字。
.centerY
.centerY
屬性報告偵測到的 視覺簽名中心的 Y 座標。
使用以下程式碼回傳 .centerY
屬性:
AIVision6.objects[0].centerY
.centerY
屬性 將傳回 0 到 240 之間的數字。
.originX
.originX
屬性報告偵測到的 視覺簽名的最左上角的 X 座標。
使用此程式碼傳回 .originX
屬性:
AIVision6.objects[0].originX
.originX
屬性將傳回 0 到 320 之間的數字。
.originY
.originY
屬性報告偵測到的 視覺簽名的最左上角的 Y 座標。
使用此程式碼傳回 .originY
屬性:
AIVision6.objects[0].originY
.originY
屬性將傳回 0 到 240 之間的數字。
。角度
.angle
屬性傳回 顏色代碼的 角度值。
使用以下程式碼回傳 .angle
屬性:
AIVision6.objects[0].angle
.angle
屬性傳回偵測到的 顏色代碼的 方向,範圍從 0 到 359.99 度。
.存在
.exists
是一個布林屬性,如果它是有效對象,則傳回 true。
如果物件無效,例如使用負整數,它將傳回 false。 如果某個物件無效,則所有其他屬性將傳回 0 作為其值。
int main() {
while (true) {
// 拍攝快照以檢查偵測到的物件
AIVision6.takeSnapshot(BlueBox);
// 清除螢幕/重置,以便我們可以顯示新資訊
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// 若找到物體,列印位置
if (AIVision6.objects[0].exists) {
Brain.Screen.print("Center X: %d, AIVision6.objects[0].centerX);
} else {
Brain.Screen.print("無物件");
}
wait(0.5, 秒);
}
}