使用Python程序,用户可以把各种库都整合在一起,从而设计出复杂的项目。用户可以把嵌入式控制板上的GPIO库与SimpleCV结合起来,从而实现一个互动型照相馆。通过使用SimpleCV中的findHaarFeatures 函数,还可以给照相馆所拍摄的人像添加各种元素,如帽子、眼镜或胡子。
这里是把嵌入式控制板变为照相馆所需要的材料:
● USB 摄像头;
● 显示器;
● 按钮;
● 长度合适的连接线;
● 一个10 kΩ 的电阻。
在开始之前,先确认嵌入式控制板上已经正确安装了Python的 RPi.GPIO 和 SimpleCV库。请参考“在Python中安装并测试GPIIO”和“安装并测试 SimpleCV”的内容。
(1)把按钮接在 GPIO 24 接口上。按钮的一个引脚接3.3 V,另一个接GPIO 24接口。不要忘记在地线和接GPIO的按钮引脚间加上一个10kΩ 的下拉电阻。
(2)找一张背景为白色胡子的图片,把它命名为“mustache.png”并保存到嵌入式控制板上的新目录下。
(3)在这个目录下,创建一个名为“photobooth.py”的新文件,输入代码并保存。
photobooth.py的源代码如下:
from time import sleep, time
from Simple CV import Camera, Image, Display
my Camera=Camera (prop set={ "width : 320, "height":240})
my Display=Display(resolution=(320i 240))
stache=Image(“ mustache . png" )
stache Mask = \
stache .create Binary Mask(colorl=(0,0,0),color2=(254,254,254))
stache Mask = stache Mask. invert ()
GPIO.setmode(GPIO.BCM)
GPIO.setup(24,GPIO.IN)
def mustachify(frame):
faces = frame. find Haar Features("face”)
if faces:
for face in faces:
print "Face at: " + str(face.coordinates())
my Face = face.crop()
noses = my Face. f ind Haar Features (“nose” )
if noses:
nose=noses. sort Area ()[-1 ]
print “Nose at:” +str(nose. coordinates ())
xmust=face.points[0] [0] + nose.x-(stache.width/2)
ymust= face.points[0][1] +nose.y + (stache.height/3)
else:
return frame
frame=frame.blit( stache, pos=( xmust,ymust), mask = stach Mask)
return frame
else:
return frame
while not my Display. is Done():
input Value=GPI0. input(24)
frame=my Camera. getlmage()
if input Value==True:
frame=mustachify(frame)
frame. save( "mustache- " +str(time())+ jpg")
frame = frame. flip Horizontal()
frame. show()
sleep(3)
else:
frame= frame. flip Horizontal()
frame. save(my Display)
sleep( .05)
现在把摄像头连接好,在终端上进入胡子图片和“photobooth.py”所在的目录,运行脚本如下:
pi@raspberrypi ~ $ sudo python photobooth.py
屏幕上会显示摄像头所捕获的图片。当按钮被按下时,程序会检测人脸、胡子并保存图片(所有的图片都会保存在与脚本相同的路径下)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。