#/bin/python
from koi import *
from time import sleep
x = 0
lcd.rotation(2) #改變屏幕方向
sleep(1)
lcd.rotation(0) #改變屏幕方向
sleep(1)
drawString(5,5,"hello world",500) #顯示字串
while True:
img=sensor.snapshot() #屏幕刷新
lcd.display(img) #屏幕刷新
if btnAValue() == 1:
img.save("s1.jpg") #KOI拍照
if btnBValue() == 1:
loadImage("s1.jpg") #顯示相片
特徵分類器
初始化分類器
cla.reset()
初始化特徵分類器。
特徵提取
cla.addImage("tag")
提取特徵添加標籤。
tag代表物件標籤,最多支援40張圖片,40件物件。
執行特徵分類
cla.getImageTag()
運行一次分類器。
分類器返回觸發事件
while cla.getImageTag()=='tag':
pass
分類器返回標籤為tag時觸發事件。
保存和載入分類器
cla.save("abc.json")
cla.load("abc.json")
保存分類器模型和載入分類器模型。
示範程式
#模型訓練與保存
from koi import *
x=0
cla.reset()
while True:
img=sensor.snapshot() #屏幕刷新
lcd.display(img) #屏幕刷新
if btnAValue():
cla.addImage('apple') #提取特徵添加標籤
if btnBValue():
cla.addImage('orange') #提取特徵添加標籤
if btnAValue() and btnBValue():
cla.save('fruit.json') #保存分類器
time.sleep(0.1)
#模型載入與運行
from koi import *
x=0
cla.reset() #初始化分類器
cla.load("fruit.json") #載入分類器
while True:
img=sensor.snapshot() #屏幕刷新
lcd.display(img) #屏幕刷新
if btnAValue():
tag=cla.getImageTag() #執行特徵分類
if tag=='orange':
print('I like oranges.')
elif tag=='apple':
print('Apples are healthy.')
time.sleep(0.1)
人臉追蹤
載入人臉模型
yoloinit()
載入人臉模型。
運行人臉追蹤
trackface()
運行人臉追蹤。
示範程式
#/bin/python
from koi import *
x = 0
face_prop=[0,0]
yoloinit() #載入人臉模型
while True:
img=sensor.snapshot() #屏幕刷新
lcd.display(img) #屏幕刷新
r = trackface() #人臉追蹤
if r:
is_face=1
drawString(5,5,r,500)
face_prop[0]=(r[0][2]+r[0][0])/2
face_prop[1]=(r[0][3]+r[0][1])/2
else:
is_face=0
while is_face:
print('X: '+str(face_prop[0]))
print('Y: '+str(face_prop[1]))
is_face=0
time.sleep(0.5)
幾何圖形識別
線條追蹤
findLines()
追蹤畫面裡的線條。返回一個列表。
圓形追蹤
findCircle(threshold)
追蹤畫面裡的圓形。
threshold代表臨界值,越高越難追蹤,一般建議4000。返回一個列表。
矩形追蹤
findRect(threshold)
追蹤畫面裡的矩形。
threshold代表臨界值,越高越難追蹤,一般建議4000。返回一個列表。
示範程式
from koi import *
x=0
while True:
img=sensor.snapshot() #屏幕刷新
lcd.display(img) #屏幕刷新
if btnAValue() and btnBValue():
line_prop = findLines() #線條追蹤
print(line_prop[0])
time.sleep(0.1)
elif btnAValue():
circle_prop = findCircle(4000) #圓形追蹤
print(circle_prop[0])
time.sleep(0.1)
elif btnBValue():
rect_prop = findRects(4000) #矩形追蹤
print(rect_prop[0])
time.sleep(0.1)
顏色追蹤
顏色校正
colorCalibrate()
校正要追蹤的顏色。
追蹤色塊
findBlob()
追蹤色塊。
追蹤巡線
findLinearRegress()
追蹤巡線。
示範程式
from koi import *
x=0
while True:
img=sensor.snapshot() #屏幕刷新
lcd.display(img) #屏幕刷新
if btnAValue():
colorCalibrate() #顏色校正
time.sleep(0.1)
elif btnBValue():
blob_prop=findBlob() #追蹤色塊
print(blob_prop[0])
time.sleep(0.1)
elif btnAValue() and btnBValue():
line_prop=findLinearRegress() #追蹤巡線
print(line_prop[0])
time.sleep(0.1)
條碼識別
QR Code識別
findQRCode()
識別畫面裡的QR Code。
Barcode識別
findBarcode()
識別畫面裡的Barcode。
AprilTag識別
findAprilTag()
識別畫面裡的AprilTag。
示範程式
from koi import *
x=0
lcd.rotation(2)
while True:
img=sensor.snapshot() #屏幕刷新
lcd.display(img) #屏幕刷新
if btnAValue():
barcode=findBarCode() #Barcode識別
print(barcode[0][4])
time.sleep(0.1)
if btnBValue():
qrcode=findQRCode() #QR Code識別
print(qrcode[0][4])
time.sleep(0.1)
if btnAValue() and btnBValue():
april=findAprilTag() #AprilTag識別
print(april[0])
time.sleep(0.1)