OpenCV3.3 + Python3.6 开发环境配置

2023-11-03

2018.9.6 更新:Anaconda3-5.2.0版本(Python 3.6)下OpenCV 3 安装

今天重新安装了 Python 的环境,发现在新版本 Anaconda3 下安装配置 OpenCV 3 十分简单。
Anaconda navigator 左侧选择 Environment ,在右侧要使用的环境中,左上方将 Installed 改为 All,右侧搜索 cv ,便可看到 opencv,勾选后点击右下角 Apply ,同时还会安装几个依赖包,点击确认后稍等即可,我安装的版本是 3.4.1 。
如此简单,快在编辑器中 import cv2 试试吧!

以下是原文:


人生苦短,快用 Python。传统的 OpenCV 使用 C++ 开发,程序运行效率高,但是开发效率… Python 语法简洁,现在越来越流行,如果对效率没有严格要求的话非常推荐使用。比如我之前做的识别数独的程序,慢一点也没有关系。

在 Python 2.7 里使用 OpenCV 实在是再简单不过了,只需要把 OpenCV 目录中 /build/python/2.7 里的 “cv2.pyd” 复制粘贴到 Python 目录下的 \Lib\site-packages 文件夹中,再 import cv2 即可。

但是,本人一开始学的就是 Python 3 ,与2版本的还是有一些区别的,加上什么都喜欢用最新版的强迫症,所以查了一些资料并做了实验,把 OpenCV 3 在 Python 3 中的使用方法总结一下。

首先本文使用具体版本(2017.12.16):

  • Python 版本:3.6.3Anaconda 3
  • OpenCV 版本:3.3.1
  • Windows 10 x64

因为 opencv-python 需要 numpy 包,要安装 numpy 可以自己下载安装,不过如果使用 Anaconda 则更方便,包含了 numpy 在内的大量的科学包,还有很多其他好处。IDE使用的是 PyCharm ,美观好用。安装Anaconda3与PyCharm的过程很简单,就不多说了。

1. Anaconda 下使用 conda 安装 opencv

Anaconda使用conda管理各种包,关于conda的使用可以参考这里

如果在命令行里输入 conda install -c menpo opencv 的话,安装的版本是 v2.4.11 ,不是我想要的版本。

如果在命令行里输入 conda install -c menpo opencv3 的话,安装的版本是 v3.1.0 ,但是会提示:

UnsatisfiableError: The following specifications were found to be in conflict:
  - opencv3 -> python 2.7*
  - python 3.6*

意思是这个 opencv3 支持 python2.7 但是当前环境为 python3.6 ,所以直接使用 conda 安装可以使用但只能对版本做出妥协

2. pip 安装 opencv

使用python自带的pip管理包的话,可以试试 pip install opencv-python ,之后会自动下载:

Downloading opencv_python-3.3.0.10-cp36-cp36m-win_amd64.whl (39.7MB)`

但是我在 anaconda 命令行里使用 pip 总是下到一半出 Exception。

另一个办法是在下面的网址下载对应版本及平台的 .whl 包,再手动安装。

https://www.lfd.uci.edu/~gohlke/pythonlibs/

例如我下载的是:opencv_python‑3.3.1‑cp36‑cp36m‑win_amd64.whl

将其拷贝到 Python 目录下的 \Lib\site-packages 文件夹中,在这个目录下打开命令行(shift+右键),或者cd进这个目录,输入:

pip install opencv_python‑3.3.1‑cp36‑cp36m‑win_amd64.whl

安装完成即可使用 import cv2

3. 使用 CMake 重新编译适用于 python3 的 cv2.pyd

使用CMake重新配置和编译,这种做法可以参考我的博客中“使用 CMake + VS2017 ( + Python 3) 配置和编译 OpenCV 3.3”一文,最后会得到 cv2.cp36-win_amd64.pyd 直接拷贝即可使用。


我尝试了后两种方案均可以成功,需要注意使用的版本及平台是否对应,若使用版本不同可参考网络上其他教程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV3.3 + Python3.6 开发环境配置 的相关文章

  • 为什么 Python 在导入脚本时只保存脚本的字节码?

    既然执行Python字节码会比运行原始源代码更快 因为Python不需要重新编译 为什么Python在导入脚本时只保存编译后的字节码呢 为每个执行的脚本保存 pyc 文件不是更好吗 无论如何 Python 解释器的启动时间都需要时间 即使您
  • 为什么需要在 Python 方法中显式使用“self”参数? [复制]

    这个问题在这里已经有答案了 当在 Python 中的类上定义方法时 它看起来像这样 class MyClass object def init self x y self x x self y y 但在其他一些语言中 例如 C 您可以使用
  • str.translate 与 str.replace - 何时使用哪一个?

    何时以及为什么使用前者而不是后者 反之亦然 目前尚不完全清楚为什么有些人使用前者以及为什么有些人使用后者 它们有不同的目的 translate只能用任意字符串替换单个字符 但一次调用可以执行多次替换 它的参数是一个特殊的表 它将单个字符映射
  • 键入的完整命令行

    我想获得输入时的完整命令行 This join sys argv 在这里不起作用 删除双引号 另外 我不想重新加入已解析和拆分的内容 有任何想法吗 你太迟了 当键入的命令到达 Python 时 您的 shell 已经发挥了它的魔力 例如 引
  • 为什么在访问 Python 对象属性时使用 getattr() 而不是 __dict__ ?

    在具有一定程度的 Python 对象自省的源代码示例和 SO 答案中 常见的模式是 getattr some object attribute name string 是否有理由优先选择这种模式 some object dict attri
  • 来自 pandas 数据帧的烛台图,用日期替换索引

    此代码给出了带有移动平均线的烛台图 但 x 轴位于索引中 我需要 x 轴位于日期中 需要做什么改变 import numpy as np import pandas as pd import matplotlib pyplot as plt
  • django 模板 - 如何动态访问变量?

    假设我有一个具有以下上下文的 django 模板 data1 this is data1 data2 this is data2 data name data2 现在我知道了data name 假设它是 data2 是否可以用它来访问变量d
  • 查找正在导入哪些 python 模块

    从应用程序中使用的特定包中查找所有 python 模块的简单方法是什么 sys modules是将模块名称映射到模块的字典 您可以检查其键以查看导入的模块 See http docs python org library sys html
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 在linux上安装python ssl模块,无需重新编译

    是否可以在已经安装了 OpenSSL 的 Linux 机器上安装 python 的 SSL 模块 而无需重新编译 python 我希望它就像复制几个文件并将它们包含在库路径中一样简单 Python版本是2 4 3 谢谢 是否可以在已经安装了
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • 数据框中 .map(str) 和 .astype(str) 有什么区别

    我有一个数据框 其列名为 col1 和 col2 的整数类型条目 我想将 col1 和 col2 的条目以及其间的 点 连接起来 我搜索并发现添加两个列条目 df col df col1 map str df col2 map str 并添
  • 如何用正则表达式替换多个匹配/组?

    通常我们会编写以下内容来替换一场比赛 namesRegex re compile r is life re I replaced namesRegex sub r butter There is no life in the void pr
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 无法导入QUERY_TERMS

    我正在运行一个网站Python and Django Django filters 2 1 installed Django 2 1 installed 当我运行时 我收到以下错误 importError Could not import
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的
  • 如何使用 Python/Django 在 Facebook 中获取(和使用)扩展权限

    我正在尝试编写一个简单的应用程序 让用户授予我的代码写入其页面的 Facebook 流的权限 据我了解 它应该很简单 让用户单击一个按钮 启动一个弹出窗口 其中包含我的 Facebook 应用程序中的页面 在该页面中 他们单击授予的内容流发

随机推荐

  • ChatGpt 从入门到精通

    相关资源下载地址 基于ChatGPT的国际中文语法教学辅助应用的探讨 pdf 生成式人工智能技术对教育领域的影响 关于ChatGPT的专访 pdf 电子 从ChatGPT热议看大模型潜力 pdf 从图灵测试到ChatGPT 人机对话的里程碑
  • Python爬虫-使用Selenium模拟百度登录

    前言 前面我已经安装好了Selenium并模拟成功了一下打开百度页面并进行查询 让我这个python初学者信心倍增 今天再来试一试百度登录 正文 把打开百度的代码放到构造方法中 ps 那个文件目录是用于后面滑块验证图片保存的 def ini
  • linux最简单预览摄像头方法

    我只想要打开摄像头 想当然就是用ffplay centos如何安装ffplay 找了一通都是编译安装 编译安装也就算了 竟然没有生成ffplay 搜了一通解决ffmpeg编译安装没有生成ffplay的教程 累了 我到底在干什么 linux真
  • FatFs目录访问接口中文版

    我是阿荣 关注我 在技术路上一起精进 目录访问 f opendir 打开目录 函数原型 FRESULT f opendir DIR dp OUT Pointer to the directory object structure const
  • Vue-Axios的封装---登录注册---axios(二)

    Vue cli Axios的封装 简单的的登录与注册 第一种 逻辑数据未分离 注册 登录 用户页面获取用户数据信息以及注销 第二种 逻辑数据分离 token 封装Axios 为什么封装axios 实现 调用封装完毕的Axios 并在添加所需
  • vuforia sdk及案例 (第二章)

    有过上一章了现在去看下载部分 我事先下载好了 用的Android Q版本 开发软件版本是3 5 3的 然后我看了一去升级到了3 6 1 我是最新版本来做的 这是我下载的 导入工程案例 VuforiaSamples 8 6 10 出现问题一
  • IntelliJ IDEA开发工具的安装,scala插件安装

    IntelliJ IDEA开发工具安装 scala插件安装 1 IntelliJ IDEA开发工具下载 下载官方网址 https www jetbrains com idea download other html 我下的2021 3 2
  • Pytorch Advanced(一) Generative Adversarial Networks

    生成对抗神经网络GAN 发挥神经网络的想象力 可以说是十分厉害了 参考 1 AI作家 2 将模糊图变清晰 去雨 去雾 去抖动 去马赛克等 这需要AI具有 想象力 能脑补情节 3 进行数据增强 根据已有数据生成更多新数据供以feed 可以减缓
  • modulename: loading out-of-tree module taints kernel

    问题描述 使用insmod命令加载编写的驱动模块时 出现提示信息 loading out of tree module taints kernel 不过 模块还是能够被加载 并且卸载后再次加载时 该提示信息没有再次出现 然而整个系统重启后再
  • Linux编码修改

    1 查看当前系统默认采用的字符集 locale 2 查看系统当前编码 echo LANG 如果输出为 en US UTF 8 英文 zh CN UTF 8 中文 3 查看系统是否安装中文字符集 locale a grep zh 如果出现了
  • JS的深拷贝函数

    自定义深拷贝函数 引入的赋值 指向同一个对象 相互之间会影响 对象的浅拷贝 只是浅层的拷贝 内部引入对象时 依然会相互影响 对象的深拷贝 两个对象不再有任何关系 不会相互影响 function isObject value const va
  • flask 开发Restful API :post get

    命令行安装flask pip install flask 新建脚本api py from flask import Flask from flask import request import json app Flask name app
  • 使你的IT职业生涯更上一层楼de14条建议

    摘要 升值为企业IT部门的领导者 是大部分IT技术人员职业生涯的最终追求 但从一般大众中脱颖而出 并非易事 仅仅把本职工作干好远远不够 还需要IT技术人员展示出投身于技术发展的奉献精神及伴随技术发展而发展的能力 升值为企业IT部门的领导者
  • OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序)

    OpenGL坐标变换及其数学原理 两种摄像机交互模型 附源程序 实验平台 win7 VS2010 先上结果截图 文章最后下载程序 解压后直接运行BIN文件夹下的EXE程序 a 鼠标拖拽旋转物体 类似于OGRE中的 OgreBites Cam
  • 频繁跳槽是职场走下坡路的开始,Java程序员注意:跳槽前,你该考虑5个问题

    本文转载自 频繁跳槽是职场走下坡路的开始 Java程序员注意 跳槽前 你该考虑5个问题 职场上 跳槽是所有职场人都会遇到的问题 关于职场跳槽的理由 笔者做了以下盘点 和直接领导的矛盾导致离职 逃避问题而离职 工作压力大 挣钱少而离职 总之
  • Harbor安装及简单使用

    在虚拟机初始化的基础上 安装Docker wget O etc yum repos d CentOS Base repo http mirrors aliyun com repo Centos 7 repo wget https mirro
  • 2020-06-11

    你需要继续学习 这样一来如果有机会的话 你应该可以往前进一步
  • 【C语言】让你不再害怕指针——C指针详解(经典,非常详细)

    https blog csdn net qq 41035588 article details 79673674
  • java 读取excel数据

    本文共介绍两种方式 第一种是常规POI读取 第二种是大文件读取 依赖包
  • OpenCV3.3 + Python3.6 开发环境配置

    2018 9 6 更新 Anaconda3 5 2 0版本 Python 3 6 下OpenCV 3 安装 今天重新安装了 Python 的环境 发现在新版本 Anaconda3 下安装配置 OpenCV 3 十分简单 在 Anaconda