目标识别python代码笔记(1)——特征检测中的问题

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’,即


你可能感兴趣的:(python)