1、如何读取文件夹中的所有图像文件?
——python中的os模块提供了很好的解决方法
2、用freak检测时,调用opencv中的detectAndCompute()函数,总出现报错,原因是没有mask值?
——没有解决。。。mask是掩膜,按说应该赋值为None就可以,可是仍然报错,后来的折中办法是,freak方法中,特征检测使用的是brisk中的方法,特征描述是用的freak描述符,所以我调用brisk生成keypoint,再调用freak直接生成descriptor。
3、文件保存问题
每张图像的keypoint是一个list,descriptor是array,所以在把所有图像的keypoint保存时,我用到了append()方法,对于keypoint可以直接append,生成N*1维的数组(N代表图像个数)形式如下:
[[keypoint for img1],[keypoint for img 2]....[keypoint for imgN]],
对于descriptor,先将其转换为list,再append,生成3D数组,N*Mat(N为图像个数,Mat为每张图像的descriptor原本的数组形式),形式如下:
【
[[des1][des1]......[des1]]——img1的descriptor,是一个二维数组
.
.
[[desN][desN].....[desN]]——imgN的descriptor,是一个二维数组
】
4、生成txt文件并保存的问题
使用np.savetxt()保存时,刚开始会报错,
原因在于,keypoint是2D数组,descriptor是3D数组,当数据维数过大时,保存就会出错。解决方法是,在savetxt的参数中,将fmt修改为‘%s’,即