Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV和MFC—imshow在32位和64位上的奇怪行为_C++_Visual Studio 2010_Opencv_Mfc_Vc10 - Fatal编程技术网

C++ OpenCV和MFC—imshow在32位和64位上的奇怪行为

C++ OpenCV和MFC—imshow在32位和64位上的奇怪行为,c++,visual-studio-2010,opencv,mfc,vc10,C++,Visual Studio 2010,Opencv,Mfc,Vc10,我在Microsoft Visual Studio 2010中有一个MFC项目。在我的对话中,我有一个PictureControl。我用opencv生成一个窗口,然后像这样将它转换为我的PictureControl namedWindow("INPUT", 1); HWND hWnd = (HWND) cvGetWindowHandle("INPUT"); HWND hParent = ::GetParent(hWnd); ::SetParent(hWnd, GetDlgItem(IDC_BMP

我在Microsoft Visual Studio 2010中有一个MFC项目。在我的对话中,我有一个PictureControl。我用opencv生成一个窗口,然后像这样将它转换为我的PictureControl

namedWindow("INPUT", 1);
HWND hWnd = (HWND) cvGetWindowHandle("INPUT");
HWND hParent = ::GetParent(hWnd);
::SetParent(hWnd, GetDlgItem(IDC_BMP_LOAD)->m_hWnd);
::ShowWindow(hParent, SW_HIDE); 
当我为32位体系结构编译它时,它可以工作。当我编译64位时,它生成namedwindow,但不隐藏,在名称处有一个奇怪的字符串,如“%HO”,与“INPUT”不同。当我试图用imshow显示某个内容时,它会给我一个访问冲突错误。这些图像来自网络摄像头。 任何帮助都将不胜感激! 谢谢

更新


我试图查看窗口处理程序hWnd是否正常,在unsued字段,它给出了“CXX0030:错误:无法计算表达式”。在OpenCV的文档中,函数cvGetWindowHandle()表示,在Win32应用程序中,它返回按名称引用的窗口的本机HWND。

您必须使用适合编译器的OpenCV库。如果构建64位,则必须使用64位opencv库。此外,您必须在调试生成中使用调试库,在发布生成中使用发布库!调用C实现(
cvNamedWindow
)会返回一个值,表示成功/失败。这至少比C++实现的信息多一些。我不知道你是如何检查窗口名称的;Windows不会以用户可见的方式存储它们。
cvGetWindowHandle
是否返回有效的窗口句柄?是您正在查询的那个吗(使用Spy++查找)?我试图查看窗口处理程序hWnd是否正常,在unsued字段中,它给出了“CXX0030:错误:无法计算表达式”。在OpenCV的文档中,函数cvGetWindowHandle()表示,在Win32应用程序中,它返回按名称引用的窗口的本机HWND。您必须使用适合编译器的OpenCV LIB。如果构建64位,则必须使用64位opencv库。此外,您必须在调试生成中使用调试库,在发布生成中使用发布库!调用C实现(
cvNamedWindow
)会返回一个值,表示成功/失败。这至少比C++实现的信息多一些。我不知道你是如何检查窗口名称的;Windows不会以用户可见的方式存储它们。
cvGetWindowHandle
是否返回有效的窗口句柄?是您正在查询的那个吗(使用Spy++查找)?我试图查看窗口处理程序hWnd是否正常,在unsued字段中,它给出了“CXX0030:错误:无法计算表达式”。在OpenCV的文档中,函数cvGetWindowHandle()表示,在Win32应用程序中,它返回按名称引用的窗口的本机HWND。