我遇到此问题,我尝试在python上导入cv2并收到以下错误消息。
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: %1 is not a valid Win32 application.
我知道有很多关于这方面的帖子,建议包的位数与python包不同。
但是,我运行的所有内容都是64位。我在win7 64位,我有winpython 2.7.3.3,64位分布,我使用提供的指令here编译了64位的opencv并将cv2.pyd dll放在Lib /中python的site-packages文件夹。
不幸的是,使用32位版本的python的建议对我来说不再适用,因为我必须处理32位以上的numpy数组。
感谢!!!
------更新
唯一缺少的是将新的opencv二进制路径(C:\ opencv \ build \ bin \ Release)添加到Windows PATH环境变量,重新启动python。
现在一切似乎都运转正常!
答案 0 :(得分:24)
由于引用了Win32,ImportError消息有点误导,而问题只是找不到opencv DLL。
通过将opencv二进制文件添加到Windows PATH环境变量的路径来解决此问题(例如,在我的计算机上,此路径为:C:\ opencv \ build \ bin \ Release)。
答案 1 :(得分:4)
您可以尝试安装32位版本的opencv
答案 2 :(得分:2)
或者您必须为win 64bit重建cv2模块。
答案 3 :(得分:1)
您所要做的就是将cv2.pyd文件从x86文件夹(例如 C:\ opencv \ build \ python \ 2.7 \ x86 \ )复制到 C:\ Python27 \ Lib \ site-packages \ ,而不是x64文件夹。
希望能帮助你。
答案 4 :(得分:1)
我刚碰到这个,问题是该软件包已经安装在每用户软件包目录中。 (在Windows上。)又名%AppData%\ Python。所以Python首先在那里寻找,找到一个旧的32位版本的.pyd文件,并且没有列出错误。不幸的是,pip卸载本身并不足以清除它,此时pip 10.0.1似乎没有--user参数用于卸载,仅用于安装。
tl; dr从%AppData%\ python \ python27 \ site-packages中删除旧的.pyd为我解决了这个问题。
答案 5 :(得分:1)
混合使用python版本时,也会出现此错误:
例如,如果要加载的任何DLL是使用python 2.7.16编译的,而您尝试使用python 2.7.15导入,则会引发此错误ImportError: DLL load failed: %1 is not a valid Win32 application.
。
至少我发现这是我的问题。
答案 6 :(得分:0)
当我遇到此错误时,我的计算机崩溃并重新启动后它就消失了。尝试关闭并重新打开IDE,如果不起作用,请尝试重新启动计算机。当我收到此错误时,我刚刚安装了库而没有重新启动pycharm。
从未关闭PyCharm首先进行测试,因为我的爆破计算机一直在随机崩溃...正在研究那个,但它至少解决了这个问题..小胜利.. :)。