1、setup.py文件编写
网上下载的C++程序的Python接口,不会使用,全靠摸索。根据最近出现的问题,写下其中的道道,避免下一次抓狂。
setup.py文件内容如下:
from distutils.core import setup
from Cython.Build import cythonize
setup(
name = "pybgs",
include_dirs = ['E:/.../opencv-3.4.1/opencv/build/include/opencv','E:/.../opencv-3.4.1/opencv/build/include/opencv2','D:/.../python3.5/Lib/site-packages/numpy/core/include'],
ext_modules = cythonize('pybgs.pyx')
)
其中,include_dirs中要添加的是你需要引入的各种API的include文件夹路径。我这里引入的是绝对路径。
2、命令行下运行 python setup.py build 命令
这里运行时遇见两种问题。
(1)error: Unable to find vcvarsall.bat
此问题在我写的这篇博文中,https://blog.csdn.net/qq_42152399/article/details/80841774
(2) error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file
这个问题就大了,也许不是同样的文件,但都是 error C1083: 无法打开包括文件: ”xxxx“:No such file
原因是:你在上面第一部分setup.py文件中的include_dirs部分指定的路径不对。
举个例子:
而我指定的setup.py文件中的路径是
再来看它出错的地方,找到matx.hpp文件及那的第51行,
程序会在的当前目录继续寻找文件,所以再往下找应该是core/cvdef.h。而不是
。所以将matx.hpp文件的51行改为
再看运行结果:
是因为上一个文件改好了,引用的新文件中又出现了引用多余的文件夹,因此依然要找到出错位置,删掉opencv2.
---------------------------------------------------------------------------------------------------------------
是否有人会想,将改为
E:/.../opencv-3.4.1/opencv/build/include
我早已经试过了,会报出更多的其他错误。我想我还是乖乖的继续改下去吧... ...
若有朋友知道其他方法,或者我这里说的不对的地方,欢迎留言告知。
************************************************************************************************************
写完后突然想到,改API源文件不是办法,既然源文件中都是从opencv2开始的,我就将路径改成opencv2的上一层。然后改项目中引用的路径,这样改的少一些。结果,改了几个地方就神奇般的好了。