登登登登!!
今天在图书馆肝了一下午之后,可终于是把这个小玩意给跑起来了,虽然说是从freedom098大佬那里学习来的(在这里谢谢大佬 QAQ),但是还是花了我好长一段时间一条一条代码的看,调试了好几处地方,才勉强看懂整个流程,让程序跑起来(还好python比较容易阅读,不然还得花时间学学python /哭)。
今天半天还是很有收获的,找到了不少小细节,希望有幸有其他人在跟我一样初学这个人脸识别程序的时候,在遇到跟我一样问题的时候,我也许能给你们一些帮助, NICE!下面呢就是一些我今天遇到的问题还有我已经用来解决了问题的可行的办法:
问题&解决办法
1、
比如说这个问题,这个问题好像就是说,图片的通道不对,因为loadImg函数里面:
img = cv2.imread(fileName,0) #载入图像,参数0表示参入的图像为灰度图
retImg = cv2.resize(img,dsize) #调整尺寸
retImg = cv2.cvtColor(retImg,cv2.COLOR_RGB2GRAY)
retImg = cv2.equalizeHist(retImg) #直方图均衡化
cv2.imshow('img',retImg)
cv2.waitKey(2000)
return retImg
第一句的imread函数第二个参数是0,意味着此时读入的图片img是单通道的灰度图,但是在第三句的cvtColor里面,读入的图片要是三通道的才行,二retImg是单通道的,此时代码在执行cvtColor的时候,就会报错。
解决的话,把imread的参数0改成1就好啦。
2、
第二处的话就是 dataMat = np.zeros((12288,1)) 这句,这句的话在原来的代码里面参数是(10,1),我们就要把第一个参数10改一下,要不然会报错。不对,他没报错?!就离谱?!我一开始试的时候还显示向量维度不一致,怎么现在故意改错想重现一下错误情况的时候反而还能跑,而且跑对了?!!我重启了一下还是能跑,那我晕了,有没有懂行的指点一下,我感觉这个地方应该是要改的,不然放不下一维的图片向量,那这个问题先放这吧。
放在最后
还有啥其他问题我暂时也想不起来了,明天继续看,有问题再记录吧。有一说一,今天也只是大概的看完了整个流程,知道怎么运转的,知道该修改那些地方,不过最关键的PCA降维那部分的还没怎么看懂,要跟PCA的数学原理和着看才能明白。
明天试一下把代码再整理一下,把训练人脸集部分的单独出来,不用每次都跑,多花时间。