计算机视觉——简介以及人脸数目检测

1.什么是计算机视觉?

\qquad计算机视觉(computer vision):机器试图理解所看到的目标。计算机视觉通过算法去尝试理解视觉信息,从而将理解转化为分类,决策,模式观察等等。

2.计算机视觉的应用

\qquad物体检测、字符识别、指纹识别等等。

3.计算机视觉如何理解视觉信息?

\qquad计算机理解视觉信息,有两种方式,一种是自下而上(bottom-up),一种是自上而下(up-bottom)。两者的区别是计算机的注意机制不同。

3.1由下而上(bottom-up)的方式

\qquad所谓计算机由下而上的理解视觉信息,是指计算机只关注图像中的兴趣区域,获取对象特征;

3.1由上而下(up-bottom)的方式

\qquad所谓计算机由上而下的理解视觉信息,是指计算机关注图像中的整体区域,即通过全局信息来得到当前的图像关注点,利用背景的视觉信息获取对对象的理解。

4.图像

4.1如何让计算机对图像进行处理?

\qquad图像即数组。
\qquad图像由一个个像素点组成,图像的单位面积像素点越多,图像的分辨率越高,而每个像素点我们可以由数字确定表示,计算机可以对这些表示像素点的数值进行处理,从而进行图像处理。
\qquad每一张图像,我们都可以看成一个二维网格,每一个像素都是组成网格的最小单元。

4.2基于RGB的像素表示

\qquad每一个像素点都有一个颜色,那么这个颜色如何使用数值表示呢?在RGB色彩原理中,任何一种颜色都可以由一个3 ×\times× 1的向量[R,G,B]表示。
RGB配色表
\qquad 查看RGB配色表,我们可以看出各种颜色的RGB的值,即向量的值。比如黑色[0,0,0],白色[255,255,255],其它颜色也都分布在[0,0,0]和[255,255,255]之间,其中当R=G=B时,颜色为不同程度的灰色;当颜色为彩色时,[R,G,B]三者不完全相同。
\qquad为了减轻计算机的计算量,当图片为二进制图像或者灰度图像时,因为R=G=B,所以我们只采用1×\times× 1的数值表示像素颜色,即每个像素点只有一个通道;当图像为彩色时,我们采取3×\times× 1的向量[R,G,B]表示每个像素点,即每个像素点有三个通道。
\qquad假如一张灰度图像,长有200个像素点,宽有150个像素点,所以可以使用200×\times× 150的矩阵表示;假如一张彩色图像,长有200个像素点,宽有150个像素点,那么可以用200×\times× 150×\times× 3的3D矩阵阵列来表示。
\qquad 基于RGB的色彩组成原理,我们对图像做很多操作,比如图像分割,利用同一张图像中,不同物体对象间的色彩差异,查找对象间的边缘,从而对同一张图片中的不同对象进行分割;寻找角点,在对图像进行分割之后,查找图像以获得某些特征,也称为角点。

5.图像处理基础函数

\qquad我们使用python对图像进行处理,需要安装opencv-python,matplotlib等。
\qquad 5.1 读取图像
dog

import cv2
import matplotlib.pyplot as plt
import timep_color = cv2.imread('F:\dog.jpg')
print(p_color.shape)
print(p_color)

\qquad通过cv.imread()可以读取图片,生成数值矩阵,上面这张dog图片的矩阵形状为520×\times× 600×\times× 3,是一张彩色图像。
\qquad 5.2 彩色图像灰度化,opencv是对灰度图像进行处理,所以需要把彩色图像处理为灰度图像。

import cv2
import matplotlib.pyplot as pltp_color = cv2.imread('F:\dog.jpg')
p_gray = cv2.cvtColor(p_color,cv2.COLOR_BGR2GRAY)
print(p_gray.shape)

\qquad通过cv2.cvtColor(p_color,cv2.COLOR_BGR2GRAY),将p_color转换为灰度图片,上述代码输出矩阵为520×\times× 600。

\qquad 5.2 矩阵图像的可视化

import cv2
import matplotlib.pyplot as pltp_color = cv2.imread('F:\dog.jpg')
p_gray = cv2.cvtColor(p_color,cv2.COLOR_BGR2GRAY)
plt.imshow(p_gray,cmap='gray')
plt.show()

灰度图\qquad plt.imshow(p_gray,cmap=‘gray’) plt.show()将灰度化的图像显示。

6.人脸数目检测

import cv2
import matplotlib.pyplot as plt# 载入图片
p_color = cv2.imread('../face1.jpg')
# 将图像灰度化
p_gray = cv2.cvtColor(p_color,cv2.COLOR_BGR2GRAY)
#展示灰度图像
plt.imshow(p_gray,cmap='gray')
plt.show()# 载入haarcascade级联分类器cascade classifier
haarcascade = cv2.CascadeClassifier('../haarcascade_frontalface_alt.xml')
# 检测图像人脸个数
faces = haarcascade.detectMultiScale(p_gray, scaleFactor=1.1, minNeighbors=5)
print("人脸的个数:",len(faces))# 给检测到的人脸加矩形框
for (x, y, w, h) in faces:cv2.rectangle(p_color, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 展示检测到的人脸并加矩形框
plt.imshow(cv2.cvtColor(p_color, cv2.COLOR_BGR2RGB))
plt.show()

上述代码依次输出:
灰度图人脸个数加矩形框的人脸检测\qquad图片face1,haarcascade_frontalface_alt.xml和程序代码可以查看人脸数目检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统复习】进程的定义、组成、组织方式

进程的定义、组成、组织方式一、进程的定义二、进程的组成三、进程的组织四、进程的特征一、进程的定义 程序:就是一个指令序列 早期的计算机(只支持单道程序) 引入多道程序技术之后: 为了方便操作系统管理,完成各程…

谷歌大脑新研究:强化学习如何学会用声音来观察?

来源:AI科技评论编译:王晔校对:维克多人类已经证明,大脑中的神经系统拥有为不断适应外界环境的变化而改变自身结构的能力。大脑内部的突触、神经元之间的连接可以由于学习和经验的影响建立新的连接。相应的,感官替代&a…

python实现单例模式的三种方式及相关知识解释

python实现单例模式的三种方式及相关知识解释 模块模式装饰器模式父类重写new继承单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singleton实现的四种方法都是python的重要特征,反过来也刚好是几种特征的最佳实现.(比如你平常开发中很…

【操作系统复习】系统调用

系统调用一、什么是系统调用?二、系统调用与库函数的区别三、系统调用背后的过程一、什么是系统调用? 💁 系统调用: 是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供…

计算机视觉——openCV的简介

\qquadopenCV是一个开源的计算机视觉库,英特尔于1999年开发出来,首先用C/C编写。使用pip install opencv-python安装OpenCV库,在python中,直接使用import cv2命令,导入OpenCV库。 1.openCV的颜色模式 \qquadopenCV的默…

北大校友“炼丹”分享:OpenAI如何训练千亿级模型?

来源:AI科技评论编译:琰琰大规模深度神经网络训练仍是一项艰巨的挑战,因为动辄百亿、千亿参数量的语言模型,需要更多的 GPU 内存和时间周期。这篇文章从如何多GPU训练大模型的角度,回顾了现有的并行训练范式&#xff0…

WeStrom自定义设置修改快捷键

按照下图操作,不BB: 终极懒人设置:!!! 转载于:https://www.cnblogs.com/luzhanshi/p/10755285.html

计算机视觉——图像预处理及边缘检测

1.为什么要进行图像预处理? \qquad当对图像进行边缘、轮廓的检测时,图像噪声会对检测产生不利影响,并且为了帮助模型专注于一般细节并获得更高的准确度,我们需要对图像进行预处理。 \qquad预处理的内容有去除噪声,控制…

【操作系统复习】进程的状态与转换

进程的状态与转换一、进程的状态二、进程的转换一、进程的状态 进程是程序的一次执行过程。在这个执行过从中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见 ,进程的状态是会有各种变化。为了方便对各个进程的管理&#xff…

图灵奖得主杨立昆人工智能十问:AI会统治人类吗?

来源:《科学之路》作者:杨立昆 即便是最先进的人工智能系统也存在局限性,它们还不如一只猫聪明。人工智能常常被认为是一项将要颠覆世界的技术,从这一概念诞生至今的65年中,无数电影与小说塑造了各种经典的人工智能角…

数据产品-数据库

code-n转载于:https://www.cnblogs.com/codewan/p/10755374.html

linux的常用操作——lftp、nfs、ssh和scp

1 lftp的介绍 1.1 lftp的作用 \qquad一个ftp客户端工具,可以上传或者下载文件。 1.2 lftp的安装 \qquadUbuntu下:sudo apt-get install lftp \qquadcentos下:sudo yum install lftp 1.3 使用lftp登录服务器 \qquad匿名登录:lftp IP地址 \q…

【操作系统复习】进程控制

进程控制一、原语1.1 进程控制相关的原语1.1.1 进程的创建1.1.2 进程的终止1.1.3 进程的阻塞和唤醒1.1.4 进程的切换💁 ​进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。一、原语 用…

mybatis postgresql insert后返回自增id

在使用mybatis postgresql&#xff0c;我们有时在插入数据时需要返回自增id的值&#xff0c;此时在插入时&#xff0c;可以按照以下例子来编写mapper文件 <insert id"insertUser"><selectKey resultType"int" order"AFTER" keyProper…

DeepMind 的新强化学习系统是迈向通用 AI 的一步吗?

来源&#xff1a;数据实战派作者&#xff1a;Ben Dickson这篇文章是我们对 AI 研究论文评论的一部分&#xff0c;这是一系列探索人工智能最新发现的文章。对于已经精通围棋、星际争霸 2 和其他游戏的深度强化学习模型来说&#xff0c;人工智能系统的主要挑战之一是它们无法将其…

linux的常用操作——vim和vi

1.vi和vim有什么区别&#xff1f; \qquadvi和vim都是文本编辑器&#xff0c;vim是从vi发展过来的。 2.vim的三种操作模式 &#xff08;1&#xff09;命令模式&#xff1a; \qquad打开文件之后&#xff0c;默认进入命令模式。 vim a.txt #打开a.txt文本&#xff0c;此时处于命…

第十届蓝桥杯 等差数列(Python)

题目&#xff1a; 思路&#xff1a; 1、给数组排序&#xff0c;求出两两之间的差值即公差&#xff0c;如果差值为0&#xff0c;直接返回n&#xff0c;否则进入第二步&#xff1b; 2、给差值数组排序&#xff0c;求出两两之间的最大公因数即公差 代码&#xff1a; def gcd(…

两种实现简单cp的方法

第一种&#xff1a;标准IO #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #define N 32 void mycp(const char * sour,const char * des); int main(int argc, const char *argv[])…

linux的常用操作——gcc

1.什么是gcc \qquadgcc是linux中的一款编译源代码的文本编译器 2.编译过程 \qquad比如对hello.c文件进行编译&#xff0c; \qquad首先&#xff0c;预处理器cpp对hello.c进行处理&#xff0c;cpp会把头文件展开&#xff0c;宏替换&#xff0c;注释去掉&#xff0c;经过cpp处理后…

LeetCode 678. 有效的括号字符串

传送门&#xff1a;https://leetcode-cn.com/problems/valid-parenthesis-string 题目描述&#xff1a; 给定一个只包含三种字符的字符串&#xff1a;&#xff08; &#xff0c;&#xff09; 和 *&#xff0c;写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下…