Linux使用pyVLfeat库做Dense sift提示段错误(segmentation fault)详细分析

pyVLfeat是著名的图像处理库VLFeat在python上的接口包。在linux环境下使用该库提示“段错误”。百度后得知:

所谓的段错误就是指访问的内存超出了系统所给这个程序的内存空间

意思其实就是数组溢出,然后想怎么会数组溢出呢?查看Vlfeat matlab接口的程序的时候看到这样一句

I = single(vl_imdown(rgb2gray(I))) ;
rgb2gray是把图片变成单通道图片,vl_imdown是对图片降采样,这都不是关键,最关键的还是在single()这个函数,百度百科可以知道:

matlab中single函数把一个矩阵中所有元素都变为单精度的。

也就是说,我也要做一个单精度的处理,再百度单精度:

单精度数,是指计算机表达实数近似值的一种方式。VB中,Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式

也就是说,要将图片全部转换成float32的格式。直接用np.float32(I),bingo!搞定

原文地址:https://www.cnblogs.com/cj695/p/4259866.html