2017/04/01
2017/04/07 Update: OpenCV_Contrib Compile & cv2.pyd generation
2017/04/11 Update: OpenCV_Contrib Complie
因为OpenCV官方并未提供py35预编好的安装包,于是我们必须要去托管OpenCV的GitHub仓库下载源代码 。下载完后,我们需要再其目录下新建一个build路径来储存Cmake生成的OpenCV库。然后在Cmake-gui下,指定OpenCV的源路径和生成路径(build)然后生成即可。
OpenCV 编译:在Cmake生成完后,来到build路径,用VS打开opencv.sln。在载入完成后,选定ALL_BUILD生成release的库文件。
对于pyd文件的生成,有两种方法。一种是在OpenCV编译完后,来到build路径下的module,找到python3路径并用VS打开opencv_python3.sln,然后再生成一次就可以在build下的lib路径里找到对应python3的OpenCV库文件cv2.cpxx-xxx_xxxxx.pyd。若VS提示说未找到python35_d.lib,则可以直接修改python安装路径下的pyconfig.h,将 “pragma comment(lib,"python3X_d.lib")” 改成 “pragma comment(lib,"python3X.lib")” (参考)。最后,将cv2.cpxx-xxx_xxxxx.pyd和build中bin目录下release库的所有dll拷贝到python安装路径下的DLLs即可。
另一种生成pyd文件的方法则是在ALL_BUILD完成后在VS的资源管理器中选择INSTALL然后开始生成。生成完后在build文件夹中会有一个install文件夹,内部就包含着pyd文件。将其与build目录下的bin文件夹中的dll文件拷到python目录下的DLLs即可。除了生成OpenCV的python库外,此方法亦可用于生成用于C++的OpenCV头文件(Reference)。
关于OpenCV_Contrib
OpenCV_Contrib存放着一些实验性的模块。如果想要编译Contrib,在将其从Github下载后,打开Cmake-gui,把OPENCV_EXTRA_MODULES_PATH的值填写为Contrib下Module文件夹的路径,然后正常Configure,Generate即可(Reference)。