在windows 10+visual studio环境下运行SelectiveSearchCodeIJCV中的demo.m难免会出现下列错误
-----------------------
if(~exist('mexFelzenSegmentIndex','var'))
-----------------------
错误使用 CountVisualWordsIndex (line 21)
First two input arguments should have the same 2D dimension
出错 BlobStructColourHist
出错 Image2HierarchicalGrouping (line 42)
[colourHist blobSizes] = BlobStructColourHist(blobIndIm, colourIm);
出错 demo (line 61)
[boxes blobIndIm blobBoxes hierarchy] = Image2HierarchicalGrouping(im, sigma, k, minSize, colorType,
simFunctionHandles);
原因是:Dependencies/FelzenSegment/mexFelzenSegmentIndex.cpp
行149:int* dims = (int*) mxGetDimensions(input[0]);
中int的问题。
方法一:
把demo.m中mex Dependencies/FelzenSegment/mexFelzenSegmentIndex.cpp -output mexFelzenSegmentIndex;
改为
mex -compatibleArrayDims Dependencies/FelzenSegment/mexFelzenSegmentIndex.cpp -output mexFelzenSegmentIndex;
因为在 mex -compatibleArrayDims下mwSize才等于C中的int。
方法二:
直接将
int* dims = (int*) mxGetDimensions(input[0]);
改为跨平台使用的数据类型mwSize
mwSize* dims = (mwSize*) mxGetDimensions(input[0]);