gpt4 book ai didi

c++ - 在使用 OpenCV Vector 和 MATLAB 时遇到问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:58:44 25 4
gpt4 key购买 nike

我正在尝试在 MATLAB 的 OpenCV 中使用特征检测器。为此,我正在创建一个 MEX 文件,该文件调用其他 CPP 文件中的某些其他函数。这些函数实现了必要的例程来调用 OpenCV 特征检测器。在创建 MEX 文件之前一切正常。它甚至可以从 MATLAB 运行普通的 OpenCV 例程。但是,当我只是简单地使用特征检测器时,它给我一个错误 - vector 迭代器不兼容。请在下面找到必要的信息 -

文件 1 - FeatureDetectorMEX.cpp -> 此文件包含从 FeatureDetetor.cpp 调用特征检测器的 MEX 函数文件 2 - FeatureDetector.cpp -> 此文件包含 FAST 特征检测器。然后它调用特征提取器 BRIEF 来获取关键点的一些特征描述符。这是代码-

Keypoints sourceKp;
Descriptors sourceDesc;
cv::FastFeatureDetector *detector = new cv::FastFeatureDetector(50);
cv::BriefDescriptorExtractor *extractor = new cv::BriefDescriptorExtractor();
//The following line generates the error
detector->detect(img.clone(),sourceKp);
if(!sourceKp.empty())
{
extractor->compute(img.clone(),sourceKp,sourceDesc);
}

这里的img是cv::Mat类型的图像数据结构。关键点是一个 vector - std::vector 关键点。描述符也是 cv::Mat。

FastFeatureDetector 是实现 FAST 特征检测器的类。 BriefDescriptorExtractor 是实现 Brief 的类。

这是错误的详细信息-

Debug Assertion Failed!

Program: C:\Program Files\MATLAB\R2010b\bin\win64\MATLAB.exe
File: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\Vector
Line: 238

表达式: vector 迭代器不兼容

以下是更多信息:我的系统是 64 位的。我正在运行 MATLAB R2010b 和 VC 2010 终极版。所有代码和 dll 都是 64 位的。如果从 VC 控制台运行,该程序不会抛出任何错误。但是,如果从 MATLAB 运行会抛出错误。

我的问题:有没有人在使用 OpenCV 中的任何特征检测程序时遇到过此类问题?如果是,请帮我解决这个问题。

最佳答案

没关系。我找到了解决方案。默认情况下,MEX 编译器在 mexopts.bat 中将 SECURE_SCL 设置为 0。保持这种方式。获取 OpenCV 发布代码(或使用 SECURE_SCL = 0 重新编译调试)。我实际上浏览了与此相关的帖子。但是,他们中的大多数告诉您设置标志 = 1,这不会抑制错误。

关于c++ - 在使用 OpenCV Vector 和 MATLAB 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497218/

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