Anaconda 安装 OpenCV for Python 教程(全平台通用)

准备工作

安装 anaconda(均为超链接)

Ubuntu 安装

Windows 安装

版本信息

Python 版本 3.6
OpenCV 版本 3.4.1.15
dlib 版本 19.6.1

开始搭建

Anaconda 创建 Python 虚拟环境

conda create -n OpenCV3.6 python=3.6    # 通过 anaconda 创建虚拟环境

# 点 y 即可

img

激活虚拟环境

activate OpenCV3.6 # 激活虚拟环境

img

安装所需资源库

pip install opencv-python==3.4.1.15 # opencv 库
pip install opencv-contrib-python==3.4.1.15 # opencv 扩展库

pip install dlib==19.6.1    # dlib 库

img

检查是否成功
显示 3.4.1 就没问题了

# 检查是否成功

python
import cv2
cv2.__version__

# 显示 3.4.1 就没问题了

img

本文来自博客园,作者:Ahtelek·B,转载请注明原文链接:http://www.cnblogs.com/AhtelekB/p/python-opencv.html

本文转载于网络 如有侵权请联系删除

相关文章

  • 华为手机切换屏幕效果_华为p40页面切换效果怎么换

    大家好,又见面了,我是你们的朋友全栈君。描述昨天尝试了一下采用style的方式定义Activity之间切换动画,大致步骤如下:新建一个AnimationActivity的style,继承自Android:style/Animation.Activity。设置四个item。<stylename="AnimationActivity"parent="@android:style/Animation.Activity"> <!--打开新的activity时旧的activity动画--> <itemname="android:activityOpenExitAnimation">@anim/activity_open_exit</item> <!--打开新的activity时新的activity动画--> <itemname="android:activityOpenEnterAnimation">@anim/activity_open_ent

  • 简单分析三极管恒流源电路

    恒流源的输出电流为恒定。在一些输入方面如果应用该电路则能够有效保护输入器件。比如RS422通讯中采用该电路将有效保护该通讯。在一定电压方位内可以起到过压保护作用。以下引用一段恒流源分析。恒流源是输出电流保持不变的电流源,而理想的恒流源为: a)不因负载(输出电压)变化而改变。 b)不因环境温度变化而改变。 c)内阻为无限大。 恒流源之电路符号: 理想的恒流源实际的流源 理想的恒流源,其内阻为无限大,使其电流可以全部流出外面。实际的恒流源皆有内阻R。 三极管的恒流特性: 从三极管特性曲线可见,工作区内的IC受IB影响,而VCE对IC的影响很微。 因此,只要IB值固定,IC亦都可以固定。 输出电流IO即是流经负载的IC。 电流镜电路CurrentMirror: 电流镜是一个输入电流IS与输出电流IO相等的电路: Q1和Q2的特性相同,即VBE1=VBE2,β1=β2。 优点: 三极管之β受温度的影响,但利用电流镜像恒流源,不受β影响,主要依靠外接电阻R经 Q2去决定输出电流IO(IC2=IO)。 例: 三极管射极偏压设计 范例1: 从左边看起:基极偏压 所以 VE=VB

  • 高级 Angular 组件模式 (6)

    06Use<ng-template>原文:Use<ng-template> RenderProps最近在React社区中引起了轰动,但是与之类似的模式在Angular中似乎并没有得到太多关注。我在之前写的文章提及过,TemplateRefs就是Angular中的RenderProps,同时我会在这篇文章中列举一个简单易用的例子。Note:TemplateRef是一个类名而<ng-template>是一个html标签,它们本质上是相同的。不过你可能会在项目中更频繁地使用<ng-template>,但是在网上你可以很容易的搜索到关于TemplateRef的知识,因为<ng-template>会给你提供很多html5中的<template>标签的信息。 我们已有的实现中,使用自定义内容指令(contentdirectives)。当组件作者提前了解使用该toggle组件的父组件所需要的状态时,那么它将会正常的运作。但是如果父组件所需要的状态并不在我们的设想之内,我们该怎么办?目标将toggle组件的状态直接提供给父组件,同

  • Kali Linux Web渗透测试手册(第二版) - 5.6 - 从Web存储中提取信息

    翻译来自:掣雷小组 成员信息:thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt标记红色的部分为今日更新内容。第五章、使用跨站脚本攻击客户端5.0、介绍5.1、使用浏览器绕过客户端控制5.2、识别跨站脚本漏洞5.3、利用XSS获取Cookie5.4、利用DOMXSS5.5、利用BeEF执行xss攻击5.6、从Web存储中提取信息5.7、使用ZAP测试WebSokets5.8、使用XSS和Metasploit获取远程shell5.6、从Web存储中提取信息 在HTML5之前,Web应用程序在用户计算机中持久或基于会话存储信息的唯一方法是通过cookie。在这个新版本的语言中,增加了新的存储选项,称为Web存储,即本地存储和会话存储。这些允许应用程序使用JavaScript从客户端(浏览器)存储和检索信息,并且在本地存储的情况下或在会话存储的情况下保留此信息直到显式删除,直到保存它的选项卡或窗口关闭为止。在本文中,我们将使用XSS漏洞从浏览器的Web存储中检索信息,表明如果应用程序容易受到攻击,攻击者可以轻松地利用这些信息。环境准备我们将再次使用Mutil

  • 玩转 Linux 之:由 Nginx log rotation 聊聊 mv 的妙用

    1、Nginx下如何正确的做日志切分今天发现有个Nginx日志rotation出来大小是0,很奇怪,按公司的业务场景来说,这是不可能的。瞅了下前同事留下来的rotation脚本,看到了这么两行,也是他们当时 rotation的方案:cp tracklog.ooxx.com.access.log ${log_date_dir}/tracklog.ooxx.com.access.log.${log_name_date} > tracklog.ooxx.com.access.log复制然后这个脚本会由crontab每10min定时的调度一次,每次都将日志通过cp截取出来,放到以时间后缀命名的文件中去,然后清空当前文件,如此循环反复。初看没问题,但仔细想想,这里面会存在丢数据的问题:从cp到>清空文件这段时间丢失数据的多少会依赖你业务的并发程度、当时机器负载、cp文件的大小共同决定。那这个问题怎么解决呢?由于Nginx自身并没有提供日志管理功能,但是它提供了一个简单的 logrotation机制:mv access.log access.log.0 kill -USR1 `cat 

  • Spring3系列3-JavaConfig

     从Spring3开始,加入了JavaConfig特性,JavaConfig特性允许开发者不必在Spring的xml配置文件中定义bean,可以在JavaClass中通过注释配置bean。      当然,你仍然可以用经典的XML方法定义bean,JavaConfig只是另一个替代方案。 一、     环境 spring-framework-3.2.4.RELEASE jdk1.7.0_11 Maven3.0.5 eclipse-jee-juno-SR2-win32   不必新建项目,仍然沿用之前的项目Spring3-Example(见“Spring3系列1-HelloWord例子”) 二、     编辑pom.xml引入依赖包CGLIB 要想使用JavaConfig特性,必须引入CGLIB包,引入后,才可以在Class配置bean(Class前加注释@Configuration表示是一个Spring配置类) <pro

  • cannot be cast to java.lang.Comparable

    Exceptioninthread"main"java.lang.ClassCastException:com.myradio.Peoplecannotbecasttojava.lang.Comparable atjava.util.TreeMap.compare(TreeMap.java:1294) atjava.util.TreeMap.put(TreeMap.java:538) atjava.util.TreeSet.add(TreeSet.java:255) atcom.myradio.TreeSetDemo.methodTreeSet(TreeSetDemo.java:18) atcom.myradio.TreeSetDemo.main(TreeSetDemo.java:14) atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) atsun.refl

  • 股票投资

    学前必看 前言 基础入门 理论基础 工具选择 开户流程 交易常识 股票分类 重要指标 市盈率与市净率 K线图 均线 金叉死叉 成交量 短线战法之RSI 核心知识 基本面分析 技术面分析概论 wechat:15618087189

  • 每日代码 - 7/1 减小方法参数的依赖

    publicList<ItemDetail>queryItemDetails(List<Cart>carts){   ItemRepositoryitemRepository=...;  List<ItemDetail>result=List.newArrayList(); List<SkuId>ids=buildItemSkuIds(carts); result=itemReposioty.query(itemSkuIds);//Dosomeadditionalthingstotheresult... returnresult; }复制 无意义地的扩大方法的依赖。在本例中,queryItemDetail中其实仅仅用到了carts的中的id属性,却需要调用者传入整个carts列表,无谓地使得该方法所依赖的参数扩大了。同样List<T>这个参数类型也没有太大意义,Iterable<T>很可能就足够了。

  • 极角排序

    极角排序 所谓极角,指的就是以x轴正半轴为始边,逆时针转过的角,这个角的范围是[0,2π][0,2π]。 利用atan2函数 atan2(y,x),表示(x,y)这个点与原点连线,这条线与x轴正半轴的夹角,这里的这个极角的范围是[−π,π][−π,π]的,一二象限为正,三四象限为负。所以我们从小到大排完序后,实际上是第三象限→→第四象限→→第一象限→→第二象限。 structnode{ intx,y; doubleangle; booloperator<(constnode&a)const{ returnangle<a.angle; } }s[N]; intn; cin>>n; for(inti=1;i<=n;i++){ cin>>s[i].x>>s[i].ys[i].angle=atan2(s[i].y,s[i].x); } sort(s+1,s+1+n);复制 叉积 已知两点坐标,通过叉积可以求得与原点所围成的三角形的有向面积。(a.x*b.y−a.y*b.x)/2 即为该三角形面积,如果这个值是正的,

  • React学习笔记

    1.ul,li列表的循环(配合数组的map方法) 2.数组中新增一个元素(配合扩展运算符) 3.删除某个循环列表的元素(index传参,配合数组的splice方法) 4.父子组件传参(父传子) index,value为自定义属性,这里注意需要唯一的key 子组件接受参数(利用的是this.props.index和this.props.value)  

  • EF性能分析(一):动态SQL性能差.从OrderBy开始分析

    1.问题背景 在我的力推下,部门业务开发转向ABP,其中ORM采用的是EntityFrameworkCore. 然而,在数据查询方面,出现了重大的性能问题... 请看代码: //在一个百万数据量的表中分页获取十条数据居然花了180ms左右,简直不能忍。 varentityList=awaitquery .PageBy(input) //这是个字符串:MonthCodedesc .OrderBy(input.Sorting) .ToListAsync(); 复制 这是很常见的Abp示例项目中的CURD中的常规代码,被大量使用... 2.分析问题 2.1遇到问题先猜,提高查问题效率 开始我平淡的猜测... a.整段代码平淡无奇,【但是OrderBy的出现】直接解决了任意字段排序的问题,简直解放双手,要知道百万数据在前端排序是不可能的。 b.【问题只能被转移,不能被消灭】--我的编程思想 c.所以,问题初步定在Orderby上。 2.2猜到问题代码,继续猜可能的原因 a.按下F12查看函数签名: OrderBy(thisIQueryablesource,ParsingConfi

  • java单例模式使用及注意事项

    1.说明 1)单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例 2)单例模式分类:饿单例模式(类加载时实例化一个对象给自己的引用),懒单例模式(调用取得实例的方法如getInstance时才会实例化对象)(java中饿单例模式性能优于懒单例模式,c++中一般使用懒单例模式) 3)单例模式要素: 1)私有构造方法          2)私有静态引用指向自己实例          3)以自己实例为返回值的公有静态方法 2.实例 饿单例模式: packagecom.wish.modedesign; publicclassHungrySingleton{ privatestaticHungrySingletoninstance=newHungrySingleton(); privateHungrySingleton(){ } publicstaticHungrySingletongetInstance(){ returninstance; } }复制 懒单例模式:  packagecom.wish.modedesign; publicclas

  • Entity Framework &ndash; (复数)Plural and (单数)Singular 表名Table names

    Bydefault,theEntityFrameworkwillassumethatallofthenamesofyourtablesinyourdatabaseareeitherpluralised(复数形式的),orinthecaseofcodefirst,youwouldlikethemtobepluralisedwhencreated.E.g.youhaveatablecalled“Product”andnot“Products”,oryouwantyourtabletobecalled“Product”andnot“Products”ThisistheproblemthatIhad.MyMVCapplicationconsistedofonewebpagethatjustdumpedoutthecontentsofthe“Product”tableontothepage.WhenIbrowsedtothepage,Igotan“Invalidobjectname‘dbo.Products’.”yellowscreenofdeathruntimeerror.TheSolutio

  • django 一对多的添加记录create 和save 方法,update 更新和save()方法的区别,查询API的方法

    转发之https://www.cnblogs.com/gyh04541/p/7910004.html   查询api的方法: 表.objects.all()---[obj1,obj2,....] 表.objects.all().first() 表.objects.filter(id=2)---[obj1,] ,得到一个集合对象,集合里只有一个,跟上first()或者【0】取到一个具体对象 表.objects.get(id=2)---obj,得到一个单独的对象,确定能找到,可以用,如果找到多个或者没有的,都报错。  QuerySet.first(),与get()方法一样,都得到一个对象 QuerySet.last(),与get()方法一样,都得到一个对象   ----update和save方法区别 Book.objects.filter(id=5).update(price=1000) #直接更新update是QuerySet集合对象的方法,推荐 save方法 book=Book.objects.get(id=5) book.price=

  • zoj 3841 Cards

    题意:给你52张牌,已知一个牌的序列,然后利用剩余的牌,能排成多少个序列,这个序列比已知的序列字典序小。 思路:从左到右尽可能放比已知序列相应位置小,找不到就放一样,然后求组合数就可以。多重集排列定理:令s时一个多重集,有k个不同类型的元素,各元素的重数分别为n1,n2......nk,令s的大小为n=n1+n2+......nk,则s的排列数为   n!/(n1!*n2!.....nk!); 1#include<cstdio> 2#include<cstring> 3#include<algorithm> 4#include<map> 5#definelllonglong 6#definemaxn100010 7usingnamespacestd; 8constintmod=1000000007; 9 10charstr[maxn]; 11intnum[maxn]; 12llf[maxn]; 13map<char,int>q; 14 15voidinti() 16{ 17f[0]=1; 18

  • 最大子列和问题

    方法一: 1intMaxSubseqSum1(inta[],intn) 2{ 3intThisSum,MaxSum=0; 4inti,j,k; 5for(i=0;i<N;i++){//i是子列左端位置 6for(j=i;j<N;j++){//j是子列右端的位置 7ThisSum=0;//ThisSum是从A[i]到A[j]的子列和 8for(k=i;k<=j;k++) 9ThisSum+=A[k]; 10if(ThisSum>MaxSum)//如果得到的这个子列和更大,则更新 11MaxSum=ThisSum; 12 13} 14} 15returnMaxSum; 16}复制 时间复杂度为O(n3)。方法二: 1intMaxSubseqSum2(intA[],intn) 2{ 3intThisSum,MaxSum=0; 4inti,j; 5for(i=0;i<N;i++) 6{ 7ThisSum=0; 8for(j=i;j<N;j++) 9{ 10ThisSum+=A[j]; 11if(ThisSum>MaxSum) 12MaxSum=T

  • 小米笔试- 没有给网格(数据)

    //二维网格和一个单词,找出该单词是否存在于网格中。////单词必须按照字母顺序,通过相邻的单元格内的字母构成,//其中“相邻”单元格是那些水平相邻或垂直相邻的单元格,同一个单元格内的字母不允许被重复使用。复制

  • js 获取当前日期任意天数的日期 任意月份的起止日期

    //根据周一的日期获取周日的日期 lettime=newDate(); lety=time.getFullYear(); letm=time.getMonth()+1; letd=time.getDate(); letdate2=y+'-'+m+'-'+d; letweekEnd; getWeeklast(6,date2); functiongetWeeklast(num,weekStart){ letnewDate=time; newDate.setDate(newDate.getDate()+num); lety=newDate.getFullYear(); letm=newDate.getMonth()+1; letd=newDate.getDate(); letdate1=y+'-'+m+'-'+d; weekEnd=date1; } console.log('当前时间'+date2); console.log('一周后时间'+weekEnd); //获取一个月的开始时间和结束时间 letmonthStart; letmonthEnd; getMonthStartEndDay

  • 一个比较综合的项目--》&gt;图片缓存,下拉刷新等

    在办公室电脑(E:\workspace\23\Collections)

  • 在windows上搭建git服务器教程

    1.首先,需要确保windows系统上安装并配置了Java运行环境,JDK>=1.7。 2.下载Gitblit,下载地址:http://www.gitblit.com/   3.解压缩下载的压缩包即可,无需安装 4.配置Gitblit    1)创建用于存储资料的文件夹。D:\keke.xu\Git\GitRepository    2)找到Git目录下的data文件下的gitblit.properties/defaults.properties文件,用“记事本”或文本编辑器打开。    因为我的 gitblit.properties文件中配置为 include=defaults.properties,所以,需要修改defaults.properties中的内容。    找到git.repositoriesFolder 修改其路径为自己创建的路径:git.repositoriesFolder=D:/keke.xu/Git/GitR

相关推荐

推荐阅读