您的位置:首页 > 理论基础

64位Win7下编译Python3的计算机视觉库:OpenCV

2016-10-16 16:08 429 查看


点我进入原文

=====【opencv3.1 + python 3.4.4 + vs2013 亲测可用】=====


64位Win7下编译Python3的计算机视觉库:OpenCV

  
 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/)
 
  OpenCV目前最新版是3.0.0 rc1,官方给出了编译好的Python2可以直接使用的cv2.pyd,可我想在Python3下用啊!只能硬着头皮自己编译了,Mingw编译到最后一步失败了,最终使用visual studio 2012编译成功,过程分享如下:
 
  (注①:本步骤适用于WIN7 64位操作系统,Python版本为3.4.3 64bit,OpenCV版本为 3.0.0 rc1,我的CUDA版本是5.5)
     (注②:请确保安装了numpy!!)
  1. 安装Visual Studio 2012。 (链接: http://pan.baidu.com/s/1nt65Oet 密码: asiu 序列号:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC)

  
    # 2015.05.28更新:
 
    # 安装完VS2012,请把 "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE"
     和 "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools" 加入环境变量中。
    # 不然可能会提示:找不到 "mspdb110.dll"。
 
 
  2. 安装CMake。(链接: http://pan.baidu.com/s/1c0EVLfE 密码: mxqf)
  3. 下载opencv源码。解压到任意位置,比如我的是 "D:/opencvcode"  (链接: http://pan.baidu.com/s/1gdvSHuN 密码: fabq)
    (可选)下载opencv的扩展modules包。解压到任意位置,比如我的是 "D:/opencv_contrib-master"  (链接: http://pan.baidu.com/s/1c0tqZ9A 密码: ee71)
  4. 修改代码。
    ① 打开 "D:\opencvcode\sources\modules\python\src2\hdr_parser.py"。
      第4行,把 codecs 库也import进来;第737行改为 "f = codecs.open(hname, "r", "utf-8")"。
    ② 打开 "D:\opencvcode\sources\cmake\OpenCVCompilerOptions.cmake"。
      把第67行 "add_extra_compiler_option(-Werror=non-virtual-dtor)"注释掉(最前面加个注释符:#)。
    ③ 打开 "D:\opencvcode\sources\modules\python\common.cmake"。
      在第27行"# header blacklist"下增加一行:ocv_list_filterout(opencv_hdrs "detection_based_tracker")。
  5. 编译源代码。
    ① 打开CMake(gui), "where is the source code"定位到 "D:/opencvcode/sources" 目录,"where to build the binaries"定位到任意输出文件夹,比如我的是 "D:/opencv1"。
    ② 勾选"Grouped"和"Advanced"。
    ③ 点击"Configure",确定,编译器选择"Visual Studio 2012 Win64"。
    ④ 确保 勾选了"BUILD -> BUILD_opencv_python3",不要勾选 "WITH -> WITH_IPP",请检查 "PYTHON3"下各种PATH、DIR、LIBRARY的路径是不是正确。
             # 2015.12.27更新:
             # 有网友不清楚路径填啥,如果是装的Win-Python,手动把路径改为如下图所示就行了。(装的官方Python就不用改了,会自动定位的)



 
    ⑤ 不要勾选 "BUILD_opencv_line_descriptor" 和 "saliency"。(暂时不清楚这两个库干嘛用的,但是我勾选了line_descriptor后总是无法成功编译)
    ⑥  "OPENCV -> OPENCV_EXTRA_MODULES_PATH" 定位到 "D:/opencv_contrib-master/modules"。
    ⑦ 再次点击"Configure",确保没有红色背景色的选项后,点击 "Generate"。
  6. BUILD代码。
    ① 进入 "D:/opencv1",打开 "OpenCV.sln"。
    ② 切换到 "Release"模式后,右键 “解决方案'OpenCV'”选择“重新生成解决方案”,接下来是漫长的等待,如果最后显示失败个数是0,就成功啦!
 
    # 2015.05.28更新:
    # 如果提示类似这样的error:Microsoft Visual Studio configuration file 'vcvars64.bat' could not be found
    # 请在 "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64"下建立 "vcvars64.bat"这个文件
    # 文件内容为:CALL setenv /x64
 



 
 
  7. 设置环境变量。
    ① 把 "D:/opencv1/bin/Release"目录加入环境变量,把 "D:/opencv1/lib/Release/cv2.pyd"复制到你的Python目录内的 "site-packages"文件夹下。
  8. 品尝成功的喜悦。
    ① 在Python中,运行如下代码:
      

import cv2
import numpy

# 读入图像
im = cv2.imread('C:/Users/Public/Pictures/Sample Pictures/Koala.jpg')
# 下采样
im_lowres = cv2.pyrDown(im)
# 转化为灰度图像
gray = cv2.cvtColor(im_lowres, cv2.COLOR_RGB2GRAY)
# 检测特征点

s = cv2.xfeatures2d.SURF_create()

#s = cv2.SURF()
mask = numpy.uint8(numpy.ones(gray.shape))
keypoints = s.detect(gray, mask)
# 显示图像及特征点
vis = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)
for k in keypoints[::10]:
cv2.circle(vis, (int(k.pt[0]), int(k.pt[1])), 2, (0, 255, 0), -1)
cv2.circle(vis, (int(k.pt[0]), int(k.pt[1])), int(k.size), (0, 255, 0), 2)
cv2.imshow('local descriptors', vis)
cv2.waitKey()

cv2.imwrite('C:/Users/Public/Pictures/Sample Pictures/Koala2.jpg',vis)


 
 
    ② duang~跳出来一张这样的考拉图片就说明成功啦!!



作者:Noah Zhang
出处:http://www.cnblogs.com/noahzn/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv python