使用OpenCV Vector和MATLAB时遇到问题
Having trouble with OpenCV Vector usage and MATLAB
我正试图在MATLAB中的OpenCV中使用特征检测器。为此,我正在创建一个MEX文件,该文件调用其他CPP文件中的某些其他函数。这些函数实现了调用OpenCV特征检测器的必要例程。在创建MEX文件之前一切都很好。它甚至可以从MATLAB中运行正常的OpenCV例程。但是,当我简单地使用特征检测器时,它会给我一个错误——向量迭代器不兼容。请在下面找到必要的信息-
文件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类型的图像数据结构。Keypoints是一个向量-std::vector Keypoints。描述符也是cv::Mat。
FastFeatureDetector是实现FAST功能检测器的类。BriefDescriptorExtractor是实现Brief的类。
以下是错误的详细信息-
Debug Assertion Failed!
Program: C:Program FilesMATLABR2010bbinwin64MATLAB.exe
File: C:Program Files (x86)Microsoft Visual Studio 10.0VCincludeVector
Line: 238
表达式:向量迭代器不兼容
以下是更多信息:我的系统是64位的。我正在运行MATLAB R2010b和VC 2010终极版。所有代码和dll都是64位的。如果从VC控制台运行,该程序不会引发任何错误。但是,如果从MATLAB运行,会抛出错误。
我的问题是:有人在OpenCV中的任何特征检测器程序中遇到过这种问题吗?如果是,请帮我。
没关系。我找到了解决办法。默认情况下,MEX编译器在mexopts.bat中的SECURE_SCL为0。保持这种方式。获取OpenCV发布代码(或使用SECURE_SCL=0重新编译调试)。事实上,我浏览了与此相关的帖子。但是,它们中的大多数会告诉您将flag设置为1,这不会抑制错误。
计算机视觉系统工具箱现在包括一个用于与OpenCV接口的支持包。
- 编译包含字符串的代码时遇到问题
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 从其他类访问类时遇到问题
- 使用静态成员声明类时遇到问题
- C++ 填充数组时遇到问题
- 在将字符串放入字符串向量时遇到问题?
- 余数除法和不允许除以零 (c++) 时遇到问题
- 我在C++中使用 getline() 函数时遇到问题
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 在我的四叉树实现中遇到问题
- 在 c++ 中循环遍历数组时遇到问题
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 编译 Cilk Plus 程序时遇到问题
- 存储另一个函数返回的布尔数组时遇到问题
- 我在 OpenGL 中显示图像时遇到问题
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组
- 在 for 循环中更新两个变量时遇到问题C++
- 为什么我的程序在打开网络设备时遇到问题
- 在 Tensorflow C++ 中使用 FIFOQueue 时遇到问题
- 为什么我在虚幻引擎中的多态性和接口方面遇到问题?