AI摄像头-python使用示例
Contents
1.2. AI摄像头-python使用示例#
添加python文件#
为了方便的使用python对AI摄像头进行编程,我们可以使用已经编写好的库EF_Produce_MicroPython-master,只需要调用函数并修改参数即可实现对应的功能。
下载压缩包并解压EF_Produce_MicroPython-master
为了给AI摄像头编程,我们需要添加AILens.py这个文件。点击Load/Save,然后点击Show Files(1)下拉菜单,再点击Add file在本地找到下载并解压完成的EF_Produce_MicroPython-master文件夹,从中选择AILens.py这个文件添加进来。
API#
API | 描述 |
---|---|
AILENS() |
初始化AI摄像头模块。 |
switch_function(func) |
选择摄像头功能,func 选择功能:(Learn 特征学习;Card 卡片识别;Face 人脸识别;Tracking 巡线识别;Color 颜色识别;Ball 小球识别)。 |
get_card_content() |
识别卡片内容。 |
get_card_data() |
用列表的方式返回画面中卡片的信息:(X轴坐标、Y轴坐标、宽度、高度、置信度、图像中卡片总数、当前卡片ID)。 |
get_face() |
判断画面中是否存在人脸。 |
get_face_data() |
用列表的方式返回画面中人脸的信息:(X轴坐标、Y轴坐标、宽度、高度、置信度、图像中人脸总数、当前人脸ID)。 |
get_ball_color() |
检测画面中的小球颜色 |
get_ball_data() |
用列表的方式返回画面中小球的信息:(X轴坐标、Y轴坐标、宽度、高度、置信度、图像中小球总数、当前小球ID)。 |
get_track_data() |
用列表的方式返回画面中线段的信息:(偏移角度、偏移距离、线段长度)。 |
get_color_type() |
检测画面中的卡片颜色 |
get_color_data() |
用列表的方式返回画面中的颜色信息:(X轴坐标、Y轴坐标、宽度、高度、置信度、图像中颜色总数、当前颜色ID)。 |
learn_object(learn_id) |
以ID号来学习一个物品,ID号:1~5。 |
get_learn_data() |
用列表的方式返回画面中已学习物品的信息:(物品ID、置信度)。 |
class AILENS(object)
初始化AI摄像头模块。
def switch_function(self, func)
选择摄像头功能,func
选择功能:(Learn
特征学习;Card
卡片识别;Face
人脸识别;Tracking
巡线识别;Color
颜色识别;Ball
小球识别)。
def get_image(self)
获取一帧画面
def get_ball_color(self):
检测画面中的小球颜色,返回值(当检测到蓝色小球时,返回值为’Blue’,当检测到红色小球时,返回值为’Red’,否则返回‘No Ball’。)
def get_ball_data(self)
返回画面中小球的信息,BallData [x,y,w,h,confidence,total,order]。
x:X轴坐标
y:Y轴坐标
w:宽度
h:高度
confidence:置信度
total:图像中小球总数
order:当前小球ID
def get_face(self)
判断画面中是否存在人脸
def get_face_data(self)
返回画面中人脸的信息,FaceData [x,y,w,h,confidence,total,order]。
x:X轴坐标
y:Y轴坐标
w:宽度
h:高度
confidence:置信度
total:图像中人脸总数
order:当前人脸ID
def get_card_content(self)
返回卡片内容,可能的返回值:
numberCards = [”0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”]
letterCards = [”A”, “B”, “C”, “D”, “E”]
otherCards = [”Mouse”, “micro:bit”, “Ruler”, “Cat”, “Peer”, “Ship”, “Apple”, “Car”, “Pan”, “Dog”, “Umbrella”, “Airplane”, “Clock”, “Grape”, “Cup”, “Turn left”, “Turn right”, “Forward”, “Stop”, “Back”]
当没有检测到卡片时,返回值为‘No Card’
def get_color_type(self)
返回卡片颜色,可能返回的颜色:
绿色卡片:”Green”
蓝色卡片:”Blue”
黄色卡片:”Yellow”
黑色卡片: “Black”
红色卡片: “Red”
白色卡片: “White”
当没有检测到颜色卡片的时候,显示‘No Color’
def get_color_data(self)
返回画面中颜色的信息,ColorData [x,y,w,h,confidence,total,order]
x:X轴坐标
y:Y轴坐标
w:宽度
h:高度
confidence:置信度
total:图像中颜色总数
order:当前颜色ID
def get_track_data(self)
返回画面中线段的信息:LineData [angel,width,len]
angel:返回图像中线段的偏移角度
width:返回图像中线段的偏移距离
len:返回图像中线段的线段长度
def learn_object(self, learn_id)
以ID号来学习一个物品,
要学习的ID号:learn_id
def get_learn_data(self)
返回画面中已学习物品的信息,返回信息:LearnData [ID,confidence]
物品ID:ID
所学习物品的置信度:confidence
示例代码#
示例一 特征学习#
from microbit import *
from AILens import *
ai = AILENS()
ai.switch_function(Learn)
while True:
ai.get_image()
if button_a.is_pressed():
ai.learn_object(1)
buff = ai.get_learn_data()
if buff[0] == 1:
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
结果#
按下A键学习物品,当识别到所学习的物品时,显示笑脸,否则显示哭脸。
示例二 颜色识别#
from microbit import *
from AILens import *
ai = AILENS()
ai.switch_function(Color)
while True:
ai.get_image()
if (ai.get_color_type() == "Green"):
display.show(Image.HAPPY)
sleep(2000)
else:
display.show(Image.SAD)
结果#
当识别到绿色卡片的时候,显示笑脸两秒,否则显示哭脸。
示例三 小球识别#
from microbit import *
from AILens import *
ai = AILENS()
ai.switch_function(Ball )
while True:
ai.get_image()
if (ai.get_ball_color() == "Red"):
display.show(Image.HAPPY)
sleep(2000)
else:
display.show(Image.SAD)
结果#
当识别到红色小球的时候,显示笑脸两秒,否则显示哭脸。
示例四 识别黑线#
from microbit import *
from AILens import *
ai = AILENS()
ai.switch_function(Tracking)
while True:
ai.get_image()
buff = ai.get_track_data()
if buff[1] > 100:
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
结果#
当摄像头中的黑线偏向左边时,LED矩阵显示哭脸,当黑线偏向右边时,LED矩阵显示笑脸。
示例五 识别人脸#
from microbit import *
from AILens import *
ai = AILENS()
ai.switch_function(Face )
while True:
ai.get_image()
if ai.get_face():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
结果#
当识别到人脸时显示笑脸,否则显示哭脸。
示例六 识别卡片#
from microbit import *
from AILens import *
ai = AILENS()
ai.switch_function(Card)
while True:
ai.get_image()
if (ai.get_card_content() == "Stop"):
display.show(Image.HAPPY)
sleep(2000)
else:
display.show(Image.SAD)
结果#
当识别到“停止”卡片时显示笑脸,否则显示哭脸。