计算机视觉

python计算机视觉Chapter1 fig1-1

匿名 (未验证) 提交于 2019-12-02 22:54:36
代码: # -*- coding: utf-8 -*- ''' created on Thursday June 21 23:05 2018 @author: Jerry ''' from PIL import Image from pylab import * # 添加中文字体支持 import matplotlib as mpl font = mpl.font_manager.FontProperties(fname= '/Users/guoruijie/Desktop/python_work/SimHei.ttf' ) # 载入图像 pil_im = Image.open( 'empire.jpg' ) # 图片尺寸 im_size = size(pil_im) print(im_size) # 转换为灰度图像 pil_im1 = pil_im.convert( 'L' ) # 复制粘贴图像区域 pil_im2 = pil_im.copy() box = ( 100 , 100 , 400 , 400 ) # 选取一块区域 region = pil_im.crop(box) region = region.transpose(Image.ROTATE_180) # 对图像进行反转 pil_im2.paste(region,box) # 由于不能用pil_im2=pil_im

人工智能几行代码实现换脸,python+dlib实现图文教程

匿名 (未验证) 提交于 2019-12-02 22:11:45
  图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展,人类对图像识别技术的认识越来越深刻。图像识别技术的过程分为信息的获取、预处理、特征抽取和选择、分类器设计和分类决策。简单分析了图像识别技术的引入、其技术原理以及模式识别等,之后介绍了神经网络的图像识别技术和非线性降维的图像识别技术及图像识别技术的应用。从中可以总结出图像处理技术的应用广泛,人类的生活将无法离开图像识别技术,研究图像识别技术具有重大意义。 1、图像识别技术的引入   图像识别是人工智能的一个重要领域。图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。图像识别,顾名思义,就是对图像做出各种处理、分析,最终识别我们所要研究的目标。今天所指的图像识别并不仅仅是用人类的肉眼,而是借助计算机技术进行识别。虽然人类的识别能力很强大,但是对于高速发展的社会,人类自身识别能力已经满足不了我们的需求,于是就产生了基于计算机的图像识别技术。这就像人类研究生物细胞,完全靠肉眼观察细胞是不现实的,这样自然就产生了显微镜等用于精确观测的仪器。通常一个领域有固有技术无法解决的需求时,就会产生相应的新技术。图像识别技术也是如此,此技术的产生就是为了让计算机代替人类去处理大量的物理信息,解决人类无法识别或者识别率特别低的信息。 如果你想要系统地学习人工智能

【CV现状-3.3】特征提取与描述

℡╲_俬逩灬. 提交于 2019-12-01 07:44:57
#磨染的初心——计算机视觉的现状 【这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣。可以随意传播,随意喷。所涉及的内容过多,将按如下内容划分章节。 已经完成的会逐渐加上链接 。】 缘起 三维感知 目标识别 3.0. 目标是什么 3.1. 图像分割 3.2. 纹理与材质 3.3. 特征提取与分类 目标(和自身)在三维空间中的位置关系 目标的三维形状及其改变、目标的位移 符号识别 数字图像处理 特征提取与分类 一定是因为纹理分析与描述以及图像分割没有取得有效的进展,导致通过材质、形状、结构进行目标识别的愿望落了空。甚至当前最优秀的图像分割算法都不能产生人类能够识别的图斑形状,此外形状和结构描述方面也没有取得多少成果,更遑论有价值的成果。但是机器学习却取得了长足的进步,各种各样适合不同分布模型的监督分类算法被发明了出来。目标识别也就顺其自然地走上了“提取特征+描述特征+监督分类”的路线,成就也是显而易见的,当前落地了的计算机视觉应用背后都得到了“特征提取与描述”以及分类的加持。随着卷积神经网络的出现,人工特征提取与描述都省了,计算机视觉已然有了被机器学习收归囊下的意思。 然而相对于纸面上的喧嚣,卷积神经网络并没有开拓出实打实的应用领域。在深度学习成为热词之前,计算机视觉已经满足了人脸识别、指纹识别、行人检测、车辆检测、质检、工业控制等场景的应用需求

计算机视觉(二)-opencv之createTrackbar()详解

限于喜欢 提交于 2019-12-01 07:22:14
摘要: 我学习openCV3看的是《学习openCV3》这本书,很厚的一本,不知道是不是因为自己看的还不是很多,个人觉得里面的有些重要函数讲的不是很详细,比如createTrackbar()这个函数,这个函数出现在这本书的第三个实例程序,书中只是说明了这是一个创建滚动条的程序,然而对里面的参数讲解以及与他相对应的回调函数讲解都不是很完美,因此我就打开了它的定义以及到网上找了一些博主的文章来学习,但是感觉讲的都不是很全,下面我结合自己的实验加上自己的理解,讲解一下我对这个函数的看法。 函数说明: createTrackbar()函数的函数原型为: CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname,int* value, int count,TrackbarCallback onChange = 0, void* userdata = 0); trackbarname:这个参数用来给这个滚动条取一个名字; winname:这个参数用来指定你要吧这个滚动条用到那个窗口上; value:这个参数用来设置滑块初始值位置,同时记录滑块以后的位置; count:这个参数用来指定滚动条可以滚动的最大值; onChange:这个参数可以理解为一个函数类型的变量(当然这样说感觉有点怪)

面经-华为

▼魔方 西西 提交于 2019-12-01 06:09:23
面试时间:2019.10.12 现场面试 面试岗位:计算机视觉算法工程师/一面/正式批 面试时长:45Min 面试内容: 自我介绍 视频分类 视频召回 视频排序 疲劳检测 相似度计算编程 K-Means算法编程 面试评价:可以 面试时间:2019.10.12 现场面试 面试岗位:计算机视觉算法工程师/二面/正式批 面试时长:60Min 面试内容: 自我介绍 和为K的最长子序列编程(暴力求解) 视频召回 C++多态(虚函数表、虚指针) 人脸检测 快排算法 面试评价:可以 面试时间:2019.10.12 现场面试 面试岗位:计算机视觉算法工程师/三面/正式批 面试时长:20Min 面试内容: 自我介绍 介绍计算机视觉研究 视频召回 为什么来华为面试 反问 面试评价:可以 来源: https://www.cnblogs.com/LuckPsyduck/p/11664144.html

结合工程实践选题调研分析同类软件产品

≡放荡痞女 提交于 2019-12-01 06:03:26
软件有很多种: ShrinkWrap(在包装盒⼦⾥⾯的软件)、Web APP ( 基于⽹⻚的软件)、Internal Software (企业或学校或某组织内部的软件)、Games(游戏)、Mobile Apps(⼿机应⽤)、Operating Systems(操作系统)、Tools(⼯具软件),请结合工程实践选题选取至少三款同类软件产品,请分析它们各⾃的特点。 我工程实践的主要方向是:计算机视觉中目标检测的一个分支:行人检测。主要需要实现的是将录像或实时摄像采集到的数据中的行人从背景中识别和标记出来。为了完成这个课题,需要运用到计算机视觉库和深度学习框架,主要可能会用到的软件包括OpenCV、Tensorflow、Keras等,OpenCV主要是基于C++编写的计算机视觉软件库,而Tensorflow和Keras则主要基于Python语言,用来实现人工神经网络等深度学习框架。而在OpenCV中也提供了关于Python一些库的接口,可以使用接口调用Tensorflow。这些软件在类型上可以被认为是ShrinkWrap,它们运行在较底层,而且被封装打包了。 1、这些软件的开发者是怎么说服你(陌⽣⼈)成为他们的⽤户的?他们的⽬标都是盈利么?他们的⽬标 都是赚取⽤户的现⾦么?还是别的? 这些软件对于我们的学习和研究具有重要的意义,在一些具体实现中需要依赖这些已经写好的软件去实现相应的功能

史上最全的机器学习资料(上)

情到浓时终转凉″ 提交于 2019-12-01 06:00:33
摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB、Python、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习牵涉的编程语言十分之广,包括了MATLAB、Julia、R、Perl、Python、Clojure、Ruby等等。 为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。 目录 C 通用机器学习 计算机视觉 C++ 计算机视觉 通用机器学习 自然语言处理 序列分析 手势识别 Common Lisp 通用机器学习 Clojure 自然语言处理 通用机器学习 数据分析 /数据可视化 Erlang 通用机器学习 Go 自然语言处理 通用机器学习 数据分析 /数据可视化 Haskell 通用机器学习 Java 自然语言处理

【计算机视觉】深入理解Attention机制

半世苍凉 提交于 2019-11-30 21:01:10
1. 什么是Attention机制? 其实我没有找到attention的具体定义,但在计算机视觉的相关应用中大概可以分为两种: 1) 学习权重分布:输入数据或特征图上的不同部分对应的专注度不同 ,对此Jason Zhao在 知乎回答 中概括得很好,大体如下: - 这个加权可以是保留所有分量均做加权(即soft attention);也可以是在分布中以某种采样策略选取部分分量(即hard attention),此时常用RL来做。 - 这个加权可以作用在原图上,也就是《Recurrent Model of Visual Attention》(RAM)和《Multiple Object Recognition with Visual Attention》(DRAM);也可以作用在特征图上,如后续的好多文章(例如image caption中的《 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》)。 - 这个加权可以作用在空间尺度上,给不同空间区域加权;也可以作用在channel尺度上,给不同通道特征加权;甚至特征图上每个元素加权。 - 这个加权还可以作用在不同时刻历史特征上,如Machine Translation。 2) 任务聚焦:通过将任务分解,设计不同的网络结构(或分支

一个C++的矩阵运算库

99封情书 提交于 2019-11-30 13:12:46
Armadillo:C++下的Matlab替代品 Eigen3:强大且只需头文件 OpenCV:方便的计算机视觉计算库 ViennaCL:并行矩阵计算 PETSc:大规模并行科学计算 其他的矩阵计算库和资料 最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧。主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐。欢迎关注我的独立博客: http://cvnote.info/ 。另外新开了个新浪微博@cvnote求关注!啊!!! Armadillo:C++下的Matlab替代品 地址: http://arma.sourceforge.net/ 许可证:MPL 2.0 目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择,许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便,这里有一个简易的Matlab到Armadillo的语法转换。下面列了一些Armadillo的特性: 支持整数,浮点数,和复数矩阵。 支持矩阵逐元素操作,包括abs · conj · conv_to · eps · imag/real · misc functions (exp, log, pow, sqrt, round