我一直在尝试安装OpenCV在 Windows 上的 Bash(Linux 的 Windows 子系统,wsl)环境中,事实证明这非常困难。
我想我已经非常接近了,但是进入 python 后,import cv2
给出以下错误:
ImportError: libopencv_core.so.3.1: cannot enable executable stack as shared object requires: Invalid argument
如何使库在堆栈上执行?
我的 OpenCV*opencv*.so*
库文件位于/usr/local/lib/
。在正常的 Linux 环境中,我将授予这些库在堆栈上执行的能力
execstack -c /usr/local/lib/*opencv*.so*
然而,即使我可以成功下载execstack
包,它不是我可以运行以允许在堆栈上执行的可识别命令。我怀疑这与数据执行保护有关,这是 Windows 版本的 Exec-Shield,用于防止堆栈粉碎攻击。
但也许我只是太接近问题而无法找出问题所在。为什么我无法导入这个 python 包?我使用的是 Python v3.4 和 OpenCV 编译的最新源代码(v.3.1)。
我按照以下步骤解决了这个问题:tatsuya-y.hatenablog.com
我使用 windows bash 并安装 opencvconda install -c menpo opencv3=3.1.0
然后我得到了这个(python 2.7)>>>import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: libopencv_ccalib.so.3.1: cannot enable executable stack as shared object requires: Invalid argument
我解决它通过execstack
command
sudo apt-get install execstack
sudo execstack -c $HOME/anaconda2/lib/libopencv_*
Then sudo apt-get install gtk2.0-0
问题解决了!>>> cv2.__version__
'3.1.0'
请记住,如果按照在线安装说明进行操作,opencv 库将安装到 /usr/local/lib 中。因此,命令将是:
sudo execstack -c /usr/local/lib/libopencv_*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)