微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调用OpenCV方法cvLoadImage时CoInitializeEx失败

我正在尝试将一些OpenCVfunction集成到我的应用程序中。 目前,我已经使用DirectShow设置了代码,从我的相机获取video源,然后显示在MFC窗口中。 此代码不能更改或删除

代码运行完全正常,但不pipe位置我放置下面的代码行:

IplImage *img = cvLoadImage("C:/well.jpg");

networking摄像头无法正确初始化并中断程序。

更直接地,我得到一个失败HRESULT在:

启动时在清单中使用uiAccess = true运行C#WPF应用程序

multithreading代理检查器

使用C ++ 11与GCC 4.8认会导致链接错误与私有inheritance和提升

如何使用Windows应用程序在第三方网站上填写和提交Web表单?

如何在主窗口菜单中放一个closuresbutton?

CoInitializeEx(NULL,COINIT_APARTMENTTHREADED)

更具体地说,在我的代码中的某个点调用CDialog :: doModal(),然后命中CoInitializeEx(),从而使程序失败。

有谁知道这里发生了什么?

将.NETconfiguration为在Windows 8上使用3.5,在Windows 8上使用4.5

GTK窗口在使用窗口时停顿'Sleep()

睡眠()function不工作?

从C ++的文件获取完整path

语法错误:缺less';' 在编译winnt.h时标识符“PVOID64”之前

如果线程之前被初始化为不同的公寓,CoInitialize将失败,即,如果之前有CoInitializeEx(NULL,COINIT_MULTITHREADED)

我猜想,OpenCV调用CoInitializeEx(NULL,COINIT_MULTITHREADED),导致您的后续调用CoInitializeEx失败。 你可以通过检查CoInitializeEx的返回值来确认 – 在这种情况下它将是RPC_E_CHANGED_MODE。

没有简单的解决方法,最简单的方法就是将OpenCV调用移入单独的线程。

除了Michael所说的检查外,还要检查外部依赖的DLL,如果缺少CoInitialize也会失败。

我有一个类似的问题。 在我的MFC应用程序调用AfxOleInit RPC_E_CHANGED_MODE失败。

我不能忽视失败(我需要应用程序内的COM),我不能将OpenCV调用移动到不同的线程(正如Michael所说的)。

我发现线程“wxwidgets和opencv 1.1 ole初始化错误” ,解决了我的问题:我不需要从OpenCV的视频输入支持,所以我可以删除#define HAVE_VIDEOINPUT 1建议在http://tech.dir.groups .yahoo.com /组/ OpenCV的/消息/ 60060

去_highgui.h ,注释行96(“ #define HAVE_VIDEOINPUT 1 ”)并重新编译

它适用于OpenCV_1.1pre1a。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐