【开发日记】石头剪刀布之数据获取

机器学习的第一步就是获取训练的数据。因为是和自己猜拳,所以这里可以通过树莓派的摄像头拍摄自己的手势图片作为训练数据。

通过opencv调用树莓派的摄像头需要做一些设置,在启动时启用摄像头,可以参考以下链接:

【树莓派】在OpenCV中调用CSI摄像头

安装以上教程做好之后,就可以用opencv调用树莓派的摄像头了。以下为调用摄像头的代码。

import cv2

clicked = False
def onMouse(event, x, y, flags, param):
    global clicked
    if event == cv2.EVENT_LBUTTONUP:
        clicked = True

cameraCapture = cv2.VideoCapture(0)
cv2.namedWindow('MyWindow')
cv2.setMouseCallback('MyWindow', onMouse)

print('showing camera feed. Click window or press and key to stop.')
success, frame = cameraCapture.read()
print(success)
count = 0
while success and cv2.waitKey(1)==-1 and not clicked:
    cv2.imshow('MyWindow', cv2.flip(frame,0))
    success, frame = cameraCapture.read()
    name = 'images/image'+str(count)+'.jpg'
    cv2.imwrite(name,frame)
    count+=1

cv2.destroyWindow('MyWindow')
cameraCapture.release()


将摄像头对准白色墙壁(避免背景的干扰),运行上述代码,然后对着摄像头做手势——“石头、剪刀、布”,重复做几次,以采集足够的数据用于训练。

这一次,我大概采集了900张,如下图所示。

【开发日记】石头剪刀布之数据获取_第1张图片

可以手工将数据手工分为4类,石头、剪刀、布和其他。分为之后,每类图片在200张左右。


你可能感兴趣的:(开发日记,图像分类,opencv,机器学习)