CMAKE + OPENCV Contrilb + Python2/Python3 编译

1. OpenCV下载: 

    OpenCV + OpenCV_Contrib(未稳定算法):Github release可下到历史版本;

    OPENCV:https://github.com/opencv/opencv/releases

    Opencv_Contrib: https://github.com/opencv/opencv_contrib/release

    注意:opencv 和 contrib版本对应,否则容易出现编译问题。

    本人经过VS2012, VS2013 X86/X64 (含Python)编译通过的版本下载地址:Opencv 3.31 + Contrib 

+ 3rdparty .


2.  HDF去掉勾选;


3. 编译选项说明:

    ALL_BUILD: 生成所有

    INSTALL: 生成安装(可以build或仅生成安装)

3. Python版本编译:

   (1)VS2012, VS2013 X86 只能编译Python3 版本 cv2.pyd
   (2)VS2013 X64 可以编译python2, python3版本cv2.pyd
   (3)VS2013 X64中 单独配置Python2 路径相关参数,虽然能选择Build_OPENCV_PYTHON2, 但还是生成不了工程(warning: Could NOT found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.14", minimum required is "3.2"))
        将Python3的相应路径配置好后,上述warning消失,可以成功生成Python2 (可以不勾选Build_OPENCV_PYTHON3仅生成python2);
    (4) 取消勾选BUILD_SHARE_LIBS, 可以生成OPENCV静态库,对应的Python cv2.pyd也不依赖opencv动态库;
    (5) 如果opencv生成的是动态库,python cv2.pyd拷贝到 site_packages目录下的同时,依赖的opencv 动态库要设置系统环境变量或者拷贝到site_packages目录下(site_packages目录下.pth里设置dll路径 或 sys.path.append对dll路径无效,只对模块搜索路径有效);
    (6).pyd其实是动态链接库,可以用depends查看依赖的其他动态链接库;
     (7) python 未找到 对应pyd:ImportError: No module named cv3.pyd
         python 未找到 依赖dll:ImportError DLL load failed


4. OPENCV CMAKE部分参数说明:
   where is source code: D:/zou/opencv/3.3.1/opencv-3.3.1
   whre to build binaries: D:/zou/opencv/3.3.1/opencv-3.3.1/VS2013_X64
   DNN相关参数:tensor flow 的model测试,可全部去掉勾选;
   CUDA相关参数:去掉勾选,可提升编译速度
   MATLAB相关参数:可去掉勾选
   BUILD_OPENCV_HDF: 一种大数据存储格式,可去掉勾选(VS2012编译报错)

   BUILD_SHARED_LIB:  编译成动态链接库  

   BUILD_opencv_world: 生成整体的lib/dll文件(不勾选生成很多模块的lib/dll文件)

  

   


5. 第三方库下载技巧:

    第三方依赖库可以从makefile可以解析到下载地址,用迅雷下载更快; 

    set(FFMPEG_BINARIES_COMMIT "66b1fed06cf3510235f367f96aa26da5cb234a15")
set(FFMPEG_FILE_HASH_BIN32 "3ae76b105113d944984b2351c61e21c6")

set(FFMPEG_FILE_HASH_BIN64 "cf3bb5bc9d393b022ea7a42eb63e794d")

set(FFMPEG_FILE_HASH_CMAKE "ec59008da403fb18ab3c1ed66aed583b")


   set(ids BIN32 BIN64 CMAKE)
  set(name_BIN32 "opencv_ffmpeg.dll")
  
set(name_BIN64 "opencv_ffmpeg_64.dll")
  
set(name_CMAKE "ffmpeg_version.cmake")


   HASH ${FFMPEG_FILE_HASH_${id}}


   "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"


   对应的宏可以在前面找;


   对于win32的下载地址解析为:
   https://raw.githubusercontent.com/opencv/opencv_3rdparty/66b1fed06cf3510235f367f96aa26da5cb234a15/ffmpeg/opencv_ffmpeg.dll
   存储的结果要保存为(.cache\目录下):
   3ae76b105113d944984b2351c61e21c6_opencv_ffmpeg.dll  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值