Python配置opencv

原理

Python调用opencv的原理是:opencv编译出共享库文件,python把这个共享库文件作为一个模块加载并使用。

通俗点就是,编译opencv的时候开启python接口选项,编译好了会产生cv2.so(linux下)或者cv2.pyd(windows下)这个共享库文件,python代码中import这个cv2就可以用了。为了能正确import它,往往需要把cv2.so放在python找包能找到的路径下,或者修改PYTHONPATH环境变量让它包含cv2.so所在路径。此外,python的opencv接口中,图像使用numpy数组表示的,所以往往还需要安装numpy、scipy、matplotlib这几个包。

安装

包括python和cv2.so/cv2.pyd两方便的安装

python

windows

windows下请用anaconda,包含了numpy等各种常见python包,非常好用。

你当然可以不用anaconda,这看起来很纯粹,然而坑不少。numpy等包通过pip下载安装的话需要额外的编译器(天知道为啥它是用vs2008编译的,现在都2017了喂!)

如果执意要安装,那么需要vc的编译器,下载:http://www.microsoft.com/en-us/download/details.aspx?id=44266

然后pip install numpy和scipy,以及matplotlib即可。

linux

linux下我也试着用过anaconda,但是觉得不合适的地方在于,平时各种开源软件在配置PYTHONPATH等变量的时候,会比较晕,还是用apt-get装的python更熟悉更容易掌控些。而且python包的编译不会像windows那么麻烦,直接pip就可以了。

sudo pip install numpy scipy matplotlib

cv2.so/cv2.pyd

windows

如果只是很简单的使用一下opencv中最常见的功能,那么不用自己编译!去官网下载windows版opencv,自带编译好的库文件和可执行文件,找到cv2.pyd,放到site-packages路径下就可以了

如果使用了有专利保护的或者其他一些第三方功能,那么很可能需要把opencv和opencv_contrib两个项目一起编译。这样产生的cv2.pyd才是可用的。

记得把cv2.pyd放到路径中。

linux

包管理工具默认是提供opencv的库文件的。比如apt或者yum、dnf去下载即可。

同样,如果是复杂功能、有专利保护功能,就需要手动编译。然后cv2.so放到路径中。

懒人方式

在需要用cv2模块的代码目录中,把cv2.so拷贝过去。因为import包的时候会在当前路径下找包的!


以下是原文

python调用opencv,是让python调用opencv的DLL文件cv2.pyd。不过直接从官网下载的opencv3.0rc1压缩包中python的cv2.pyd文件,使用起来还是有问题,SIFT,SURF等函数不能使用。

解决方法是安装一个非官方的wheel包,到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/

然后用pip安装这个opencv的wheel包。

opencv版本的选取

2015年7月10日 10:34:11

现在opencv3.0rc1已经出来了,3.0代码中的python例程,要用3.0压缩包中带的cv2.pyd

而前面提到的SIFT、SURF函数无法调用,采用“安装一个非官方的wheel”包,目前下载到的是opencv-2.4.11版本的,装好它之后,opencv-3.0rc1里面的python例程中,houghcircles.py等代码跑不起来。毕竟版本不一样,有区别。

而我同时希望在eclipse+pydev的环境下写写SIFT、SURF的调用代码,这就需要继续配置:配置系统变量PYTHONPATH,它指明了命令行下python调用的DLL路径。比如我的:

%Python%\Lib;%Python%\DLLs;%Python%\Lib\lib-tk;%Python%\my_dlls;

其中,my_dlls是我新建的目录,把opencv-3.0rc1提供的cv2.pyd放到此目录下。

这样,双击opencv-3.0rc1中的python代码,就能运行了。

而在eclipse中,对python interpreter的autoconfig,默认情况下不会添加my_dlls目录,就可以放心使用SIFT、SURF了。当然如果这时候需要在eclipse中运行opencv-3.0rc1的python例程代码,就需要添加my_dlls路径;在终端下运行调用SIFT、SURF函数的代码,就需要把PYTHONPATH中的my_dlls目录去除。没办法,python+opencv还不够成熟,只好用这种土鳖方法了。

Python使用opencv的更多相关文章

  1. 用 Python 和 OpenCV 检测图片上的条形码

      用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问 ...

  2. 在windows 8.1 64位配置python和opencv

    之前在linux下安装python和opencv及相关的库,都可以直接命令行操作.最近需要在windows下配置一下,查了一些资料,发现网上有很多关于python和opencv的配置,但由于不同版本问 ...

  3. 针对于Python的OpenCV环境搭建

    OpenCV 依赖 下载OpenCV 配置 总结 给Python搭建opencv的环境还真是略嫌麻烦,于是做下笔记,以备不时之需. OpenCV 依赖 opencv有些依赖,我们必须安装一下,否则接下 ...

  4. Ubuntu 16.04 python和OpenCV安装

    Ubuntu 16.04 python和OpenCV安装:最进在做深度学习和计算机视觉的有关内容,因此要在python中用到opencv.我的电脑装的是Ubuntu 16.04,python 2.7和 ...

  5. Python cv2 OpenCV 中传统图片格式与 base64 转换

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,是一种基于64个可打印字符来表示二进制数据的方法.通过http传输图片常常将图片数据转换成base64之后再进行传输. Base64简 ...

  6. 识别简单的答题卡(Bubble sheet multiple choice scanner and test grader using OMR, Python and OpenCV——jsxyhelu重新整编)

    该博客转自www.pyimagesearch.com,进行了相关修改补充. Over the past few months I've gotten quite the number of reque ...

  7. 用 Python 和 OpenCV 检测图片上的条形码(转载)

    原文地址:http://python.jobbole.com/80448/ 假设我们要检测下图中的条形码: # load the image and convert it to grayscale 1 ...

  8. BugKu 2B+基于python的opencv的安装-------CTF 盲水印的套路

    BugKu杂项-2B 下载图片后,binwalk下跑一跑,发现有个zip,分离. 值得一提的是,这个zip是伪加密的. 但是你在分离的时候,伪加密的图片也给你分离出来了.这两个图片2B和B2肉眼看起来 ...

  9. Python下opencv使用笔记(一)(图像简单读取、显示与储存)

    写在之前 从去年開始关注python这个软件,途中间间断断看与学过一些关于python的东西.感觉python确实是一个简单优美.easy上手的脚本编程语言,众多的第三方库使得python异常的强大. ...

随机推荐

  1. Linux(三)高级文本处理命令

    一.cut (cut 命令可以从一个文本文件或者文本流中提取文本列 ) 1.cut语法 cut -d '分隔字符' -f fields         用于有特定分隔字符 cut  -c 字符区间   ...

  2. java Ftp上传创建多层文件的代码片段

    StringBuilder sBuilder = new StringBuilder();            String[] pah = path.split("/");   ...

  3. 洛谷P1012 拼数

    题目描述 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4 ...

  4. Linux系统之路——用CentOS 7打造合适的科研环境

    安装CentOS CentOS 7的安装与其他Linux发行版的安装差不多,个别地方稍有不同. 准备工作 准备材料 U盘:容量700M以上,用于制作U盘启动盘,因为在制作启动盘时会格式化U盘,所以U盘 ...

  5. POJ 3260 完全背包+多重背包+思维

    传送门:https://vjudge.net/problem/20465/origin 题意:你有n种钞票,面值为c[i],数量为v[i],便利店老板有无数张面值为c[i]的钞票,问你买一个价值为T的 ...

  6. net-speeder

    有的同学反映自己的搬瓦工速度慢,丢包率高.这其实和你的网络服务提供商有关.据我所知一部分上海电信的同学就有这种问题.那么碰到了坑爹的网络服务商,我们应该怎么办呢? duangduang~~~~~~有请 ...

  7. @PathParam 和 @QueryParam

    今天调试一个上传功能,客户端手持机发送数据,在URL中附加一个参数,后台用@PathParam接收,但是报错,无法获取这个参数. url:http://192.168.1.3/web1_service ...

  8. NOIP2013 提高组 Day2

    期望得分:100+100+30+=230+ 实际得分:100+70+30=200 T2 觉得题目描述有歧义: 若存在2i却不存在2i+1,自己按不合法做的,实际是合法的 T3  bfs 难以估分 虽然 ...

  9. 2049: [Sdoi2008]Cave 洞穴勘测

    2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 7475  Solved: 3499 [Submi ...

  10. sublime wrong

    Q1: sublime报错: There are no packages available for installation A1: window下的:C:\Windows\System32\dri ...