我正在尝试运行 opencv2 提供的代码示例之一(“opengl_interop.cpp”)。在代码中有以下几个抛出错误的对象结构。我已将代码缩减为以下简单程序:
#include <opencv2/core/opengl.hpp>
struct DrawData {
cv::ogl::Arrays arr;
cv::ogl::Buffer indices;
cv::ogl::Texture2D tex;
};
int main() {
DrawData data;
return 0;
}
调试器将“Arrays”默认构造函数识别为罪魁祸首,并在运行时在构造函数的主体中抛出异常:
inline
cv::ogl::Arrays::Arrays() : size_(0)
{
}
编译器 (Visual Studio 2015) 提供以下消息: “基本 opengl program.exe 中 0x00007FFAFA927788 处未处理的异常:Microsoft C++ 异常:内存位置 0x000000B51399F360 处的 cv::Exception。”
在调试器控制台中,我收到以下错误消息:“OpenCV(3.4.3) 错误:`anonymous-namespace'::throw_no_ogl,文件 c:\build 中没有 OpenGL 支持(该库是在没有 OpenGL 支持的情况下编译的)\3_4_winpack-build-win64-vc15\opencv\modules\core\src\opengl.cpp,第 60 行
我在 Windows 10 上安装了 opencv2 3.4.3 的其他工作拷贝。谢谢。
编辑:opencv 是在启用 opengl 的情况下构建的。我的构建文件夹中的“CMakeCache.txt”显示以下行://Include OpenGL support
WITH_OPENGL:BOOL=ON
最佳答案
我最终修复了它,方法是获取旧版本的 opencv (4.3.4),同时安装 Qt4 和 Qt5,使用 gui Cmake 验证安装是否正确并且包含 opengl,然后仔细链接所有内容并进行测试之后。
关于c++ - 当 ogl::Arrays 的默认构造函数运行时,Opencv2 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55065364/