Python使用opencv
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的更多相关文章
- 用 Python 和 OpenCV 检测图片上的条形码
用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问 ...
- 在windows 8.1 64位配置python和opencv
之前在linux下安装python和opencv及相关的库,都可以直接命令行操作.最近需要在windows下配置一下,查了一些资料,发现网上有很多关于python和opencv的配置,但由于不同版本问 ...
- 针对于Python的OpenCV环境搭建
OpenCV 依赖 下载OpenCV 配置 总结 给Python搭建opencv的环境还真是略嫌麻烦,于是做下笔记,以备不时之需. OpenCV 依赖 opencv有些依赖,我们必须安装一下,否则接下 ...
- Ubuntu 16.04 python和OpenCV安装
Ubuntu 16.04 python和OpenCV安装:最进在做深度学习和计算机视觉的有关内容,因此要在python中用到opencv.我的电脑装的是Ubuntu 16.04,python 2.7和 ...
- Python cv2 OpenCV 中传统图片格式与 base64 转换
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,是一种基于64个可打印字符来表示二进制数据的方法.通过http传输图片常常将图片数据转换成base64之后再进行传输. Base64简 ...
- 识别简单的答题卡(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 ...
- 用 Python 和 OpenCV 检测图片上的条形码(转载)
原文地址:http://python.jobbole.com/80448/ 假设我们要检测下图中的条形码: # load the image and convert it to grayscale 1 ...
- BugKu 2B+基于python的opencv的安装-------CTF 盲水印的套路
BugKu杂项-2B 下载图片后,binwalk下跑一跑,发现有个zip,分离. 值得一提的是,这个zip是伪加密的. 但是你在分离的时候,伪加密的图片也给你分离出来了.这两个图片2B和B2肉眼看起来 ...
- Python下opencv使用笔记(一)(图像简单读取、显示与储存)
写在之前 从去年開始关注python这个软件,途中间间断断看与学过一些关于python的东西.感觉python确实是一个简单优美.easy上手的脚本编程语言,众多的第三方库使得python异常的强大. ...
随机推荐
- STL源码分析-function
http://note.youdao.com/noteshare?id=269e16541b43095eaf97636d4e046b1d
- dfs.datanode.du.reserved 预留空间不生效的问题
生产环境(cdh5.5.1)遇到一个问题:已经设置 dfs.datanode.du.reserved预留空间为20G,但是磁盘仍然被写满了. 当挂载磁盘作为datanode的存储空间,如果磁盘大小为2 ...
- Nginx修改access.log日志时间格式
一.修改原因 因为要获取nginx访问信息,作为开发的数据使用,但是nginx的access.log文件中的默认的时间格式是这样的: [02/Nov/2017:20:48:25 +0800] 而要求的 ...
- sourceTree的下载与安装
一. SourceTree是什么? 一个拥有可视化界面的项目版本控制的软件,适用于git项目管理,在window和mac均可使用. 二. SourceTree下载 下载地址:SourceTree官网 ...
- Restful 接口传递参数
首先补充一下什么是 Restful ,这里简单说一下,如果一个架构符合REST原则,就称它为RESTful架构. RESTful架构特点: (1)每一个URI代表一种资源: (2)客户端和服务器之间, ...
- 【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27】
--------– 2018.03.27 更新--------- 便携版已更新,点此获取便携版 已知BUG:中文目录无法正常调试 用于cpptools 0.15.0插件的配置文件更新 新的launch ...
- codeblocks 设置代码自动补全
熟悉使用一些开发类IDE的朋友对代码自动补全一定印象深刻,如Visual studio,eclipse等,我们在程序中定义的那一个个超长的变量函数名只需打出几个字母就可自动补全,但是在codebloc ...
- LightOJ 1364 树形DP
52张扑克牌,问拿到指定数量的4个花色的最少次数期望是多少,其中拿到joker必须马上将其视作一种花色,且要使后续期望最小. 转移很容易想到,主要是两张joker的处理,一个状态除了普通的4个方向的转 ...
- CF757 C hash
一种数字可以变成另一种数,要求每组中变换前后各种数字数量不变,问方案数 对现有每组中的每个数字构造出现在各个组情况的序列,如2 出现在第一组和第二组各一次那么就要加入组别的标号1,2,出现重复次仍要加 ...
- elasticsearch创建索引
1.通过elasticsearch-head 创建 (1)登录localhost:9100 (2)点击复合查询 (3)输入内容 (4)勾选易读,点击验证是否是JSON格式 (5)点击提交请求,返回 { ...