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~跳出来一张这样的考拉图片就说明成功啦!!
64位Win7下编译Python3的计算机视觉库:OpenCV的更多相关文章
- 64位Win7下编译hadoop 1.2.1问题解决
0.报sed的错误.原因在于没有安装cygwin.安装cygwin的时候要选择sed 1.Cannot run program "autoreconf". 这个问题在网上看了很多解 ...
- 64位Win7下运行ASP+Access网站的方法
64位Win7下运行ASP+Access网站的方法 近日系统升级为WIN7 64位之后,突然发现原本运行正常的ASP+ACCESS网站无法正常连接数据库. 网上搜索多次,终于解决了问题,总结了几条经验 ...
- 在64位linux下编译32位程序
在64位linux下编译32位程序 http://blog.csdn.net/xsckernel/article/details/38045783
- 64位Win7下H3C的iMC无法查看“网络拓扑”的解决方法、心路历程
64位Win7下H3C的iMC无法查看"网络拓扑"的解决方法.心路历程
- 64位Win7下用VS2010编译OpenSSL
http://blog.csdn.net/henter/article/details/8364532 首先要说明,如果不想自己编译OpenSSL,可以到 http://slproweb.com/pr ...
- 64位Win7下安装与配置PHP环境【Apache+PHP+MySQL】
[软件下载] 本安装实例所使用安装文件如图所示: 其中,64位版本的MySQL安装文件mysql-5.5.33-winx64.msi,可直接从官网下载,下载地址:http://dev.mysql.co ...
- 64位centos 下编译 hadoop 2.6.0 源码
64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...
- 关于在64位win7下运行Virtualbox安装系统时出错(提示VBoxDD.DLL错误)的解决方
安装没有问题,安装了最新版VirtualBox-4.3.18-96516-Win,一点运行想安装系统时就出错. 这是提示的错误: 运行Virtualbox去安装系统时出错:Failed to open ...
- C# 64位win7下DllImport LoadLibrary函数失败 z
[DllImport["kernel32.dll"]] static extern IntPtr LoadLibrary(string lpFileName); public vo ...
随机推荐
- ffprobe使用具体解释
夹 1. 语法 2. 描写叙述 3. 选项 3.1 流指示符 3.2 通用选项 3.3 音视频选项 3.4 主选项 4. 写入器 4.1 默认值 4.2 compact, csv 4.3 flat 4 ...
- 怎样通过ajax提交数据
ajax的出现彻底改变了javascript命运,通过ajax可以直接向服务器提交数据,有两种方式: get方式,数据直接拼接在地址中 post方式,数据由data字段携带 post方式,data中是 ...
- Ⅵ.AngularJS的点点滴滴-- 指令
指令 基本用法 <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angul ...
- 超过2T,磁盘分区
MBR:MBR分区表(即主引导记录)大家都很熟悉.所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区 GPT: GPT(即GUID分区表).是源自EFI标准的一种较新的磁 ...
- HDU 4336 Card Collector(容斥)
题意:要收集n种卡片,每种卡片能收集到的概率位pi,求收集完这n种卡片的期望.其中sigma{pi} <=1; 思路:容斥原理.就是一加一减,那么如何算期望呢.如果用二进制表示,0表示未收集到, ...
- 复旦大学2016--2017学年第一学期高等代数I期末考试情况分析
一.期末考试成绩班级前十名 宁盛臻(100).朱民哲(92).徐钰伦(86).范凌虎(85).沈伊南(84).何陶然(84).丁知愚(83).焦思邈(83).董瀚泽(82).钱信(81) 二.总成绩计 ...
- Maven浅析-2 什么是Maven
1.简单点讲:Maven就是一个项目构建工具.它可以生成一个artifact(component),还可以帮我们管理项目依赖(如附加的组件Filters等). 2.从整体讲:Maven也可以看作一个项 ...
- C#实现动态网站伪静态,使seo更友好
本教程将使用Visual Studio 2013手把手教你实现webform动态页面的伪静态.本教程配套的C#源码工程可通过我的github下载.地址:https://github.com/shell ...
- Binding 中 Elementname,Source,RelativeSource 三种绑定的方式
在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. so ...
- php5魔术函数、魔术常量
魔术函数 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct ...