1.介绍 利用opencv自带的svm算法,进行魔方颜色的识别,识别的效果取决于选取样本数量的多少,以及在当时光强下采集的照片的质量。 对于样本中反光较为严重,对数据影响较大时一定要删除此数据。
2.使用方法 在code文件夹中有get_picture.py文件,运行此文件可以获取所需的svm采样数据。 ''' Outer_frame=[[10, 10], [85, 10], [160, 10], [10, 85], [85, 85], [160, 85], [10, 160], [85, 160], [160, 160] ] '''
此为魔方色块尺寸,可以自行根据魔方距离摄像头尺寸自行调整。
cv.imwrite('huanyuan%d.jpg'%i,frame) 此为保存图片名称,尽量采集时不要出现差错, 避免序号缺失,导致后续程序报错。
程序打开后在视频界面点击空格即可保存数据,保存成功后打印ok 数据一定要多!!! 此时的魔方六个面应处于还原好的状态,且使用时 应记录不同颜色对应的照片序列的范围
将保存好的图片放到picture/test文件夹(自行选择)中,接下来获取样本数据。
打开程序getdata.py后,一开始边可以看到图片目录的设置, picture_path='C:/Users/user/Desktop/1/'
其中也有frame魔方色块尺寸,若上一个程序与此程序不同,则此时也记得修改
在获取数据的时候为了加快速度,我采用了多线程。 分为6个job,其后参数对应为图片名称的序号值 顺序建议按我的来,否则修改不对可能会导致颜色识别错误
job1 对应绿色图片序号 2 对应红色 3 对应蓝色 4 对应黄色 5 对应橙色 6 对应白色 程序运行完后会生成6个json文件,对应的就是采集图片所获得的RGB+HSV值
然后再运行 副本.py文件,即可生成svm.mat文件,供以后的识别使用 (该文件后面我好像加了些东西,可以删除,只生成svm.mat文件即可)
接下来运行detect.py文件,设置对应目录,文件名,就可以检测自己的svm是否成功了
此文件是静态一张张按键识别,若有需求可自己改成视频的动态识别,应用于魔方动态检测。