gpt4 book ai didi

matlab - 使用 mexopencv 提取简要特征

转载 作者:行者123 更新时间:2023-12-02 17:12:13 25 4
gpt4 key购买 nike

我正在尝试使用 mexopencv 在 Matlab 中提取二进制特征。如果我使用 ORB 作为检测器和提取器,一切正常。问题是当我尝试使用简要提取器时。这是我正在使用的代码:

detector = cv.FeatureDetector('ORB');
extractor = cv.DescriptorExtractor('BRIEF'); % if I use 'ORB' here everything works fine

img = read('my-image');
keyPoints = detector.detect(img);
descriptors = extractor.compute(img, keyPoints);

我收到以下错误:

Warning: The following error was caught while executing 'cv.DescriptorExtractor' class destructor: MxArray is not a scalar

In extract_train_orb (line 5) Error using DescriptorExtractor_ Unrecognized extractor BRIEF

Error in cv.DescriptorExtractor (line 63) this.id = DescriptorExtractor_(0, 'new', extractorType, varargin{:});

Error in extract_train_orb (line 2) extractor = cv.DescriptorExtractor('BRIEF');



我不知道如何解决这个问题,因为 mexopencv's documentation说BRIEF是一个受支持的提取器。

有人有什么想法吗?谢谢

编辑:

事实上,ORB 是目前唯一有效的类型。 'BRIEF'、'SURF' 和 'SIFT' 类型出现相同的错误。

我在 Ubuntu 14.04 下使用 OpenCV 3.0 和 Matlab R2015b。

编辑 2:
contrib module没有安装。
我下载 opencv_contrib ,重新构建并重新安装 OpenCV,最后,尝试通过以下方式编译 mexopencv contrib 模块:
make MATLABDIR=/usr/local/MATLAB/R2015b contrib

编译失败并出现以下错误:

/tmp/mex_619067277620954_21116/BriefDescriptorExtractor_.o: In function ``mexFunction': BriefDescriptorExtractor_.cpp:(.text+0x31d8): undefined reference to `createBriefDescriptorExtractor(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >)' collect2: error: ld returned 1 exit status

最佳答案

这可能与特征检测器和描述符提取器之间的不兼容有关。例如,您可以尝试对检测器和提取器使用“SURF”吗?

即使我的建议有效,我也希望“ORB”检测器可以与“BRIEF”提取器一起使用,因为“ORB”只是“Oriented Brief”。但是,您应该确定检测器和特征提取器的兼容性,也许您应该阅读有关这些技术的论文。例如,除了关键点之外,一些提取器还会产生音阶或 Octave 音阶,而有些则不会。类似地,一些描述符期望具有带有关键点的比例或 Octave 音阶输入,而有些则没有。

这是一个原始示例;您无法使用三星充电器为 iPhone 充电,反之亦然。两者都是手机,都有充电器,但它们不匹配。

关于matlab - 使用 mexopencv 提取简要特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com