Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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
使用Python 3支持进行OpenCV构建_Python_Windows_Opencv_Python 3.x_Cmake - Fatal编程技术网

使用Python 3支持进行OpenCV构建

使用Python 3支持进行OpenCV构建,python,windows,opencv,python-3.x,cmake,Python,Windows,Opencv,Python 3.x,Cmake,我想在OpenCV中支持Python 3,所以我读到需要用它构建自己的版本 我从SourceForge下载了OpenCV 3 beta版,然后使用CMake创建了一个项目,然后用Visual Studio编译了它。 它创建了很多文件(实际上与Sourceforge的预编译文件夹中的结构不同),还创建了一个cv2.pyd。我将此文件放入Python34\lib\site包中,并尝试在python控制台中导入cv2,但它显示 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ImportErro

我想在OpenCV中支持Python 3,所以我读到需要用它构建自己的版本

我从SourceForge下载了OpenCV 3 beta版,然后使用CMake创建了一个项目,然后用Visual Studio编译了它。 它创建了很多文件(实际上与Sourceforge的预编译文件夹中的结构不同),还创建了一个cv2.pyd。我将此文件放入Python34\lib\site包中,并尝试在python控制台中导入cv2,但它显示 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ImportError:DLL加载失败:找不到模块

我做错了什么?
谢谢。

如果您不想构建自己的版本,Christoph Gohlke为许多Python软件包维护Windows二进制文件,包括2015年6月4日发布的带有Python 3.x绑定的OpenCV 3.0生产版:


要安装,只需下载适合您系统的64位或32位
.whl
文件,然后运行
pip install[filename]
。然后,指令
import cv2
应该可以在Python3.x解释器中工作。

听起来像是为opencv创建了动态库(dll)。在这种情况下,必须将包含这些内容(如e:\opencv\build\bin\release)的文件夹附加到PATH变量,以便cv2.pyd可以在运行时找到它们。根据我的经验(至少以前是这样),opencv在windows上构建时也会生成一个cv2.dll,它应该与cv2.pyd放在同一个文件夹中。话虽如此,我不确定现在那里的情况如何,贝拉克可能是对的。无论如何,在您的环境路径中有正确的DLL是一个很好的实践,rapid environment editor是在Windows.Ok上设置DLL的常用免费软件。我将新变量添加到path中,但它没有帮助。我在文件夹中没有看到cv2.dll或任何类似的库。老实说,我希望编译后我会得到一些安装文件,这些文件将执行常规的安装过程。您是否在visual studio中构建了安装目标(子项目)?根据我的经验,对于Windows平台,默认情况下不会做您期望的所有事情,但至少它会将所有内容移动到根opencv目录中的特定文件夹(“install”,如果我没记错的话),并可能将python相关文件移到其正确的目的地。看看能给你什么。另外,您安装的python是什么体系结构,您编译的是什么体系结构?在某些情况下,它们之间的不匹配可能会导致DLL加载错误。此外,请确保每次尝试某项操作时都完全重新加载python shell(不确定使用哪个shell,但如果只是从windows命令提示符重新启动该shell)。