haar级联分类器--人脸检测和匹配

分类器链接,https://download.csdn.net/download/fanzonghao/10582586

代码:

import numpy as np
import cv2# 实例化人脸分类器
face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
# 实例化眼睛分类器
eye_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_eye.xml')
# 读取测试图片
img = cv2.imread('faces.jpg',cv2.IMREAD_COLOR)
# 将原彩色图转换成灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 开始在灰度图上检测人脸,输出是人脸区域的外接矩形框
faces = face_cascade.detectMultiScale(gray, 1.2, 8)
# 遍历人脸检测结果
for (x,y,w,h) in faces:# 在原彩色图上画人脸矩形框cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)# 获取该人脸矩形框的感兴趣区域RoI, 浅复制roi_gray = gray[y:y+h, x:x+w]roi_color = img[y:y+h, x:x+w]# 开始在人脸区域中检测眼睛,输出是眼睛区域的外接矩形框eyes = eye_cascade.detectMultiScale(roi_gray)# 遍历眼睛检测结构for (ex,ey,ew,eh) in eyes:# 在原彩色图上画眼睛矩形框cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
# 显示画好矩形框的图片
cv2.namedWindow('faces', cv2.WINDOW_AUTOSIZE)
cv2.imshow('faces',img)
# 等待退出键
cv2.waitKey(0)
# 销毁显示窗口
cv2.destroyAllWindows()

模板检测:

import cv2
import numpy as np# 读取图片,彩色模式
img_color = cv2.imread('faces.jpg',cv2.IMREAD_COLOR)
# 读取图片,灰度模式
img_gray = cv2.imread('faces.jpg',cv2.IMREAD_GRAYSCALE)
# 读取人脸模板图片,灰度模式
template = cv2.imread('face_template1.jpg',cv2.IMREAD_GRAYSCALE)
# 获取模板尺寸
w, h = template.shape[::-1]
# 模板匹配方法数组
methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR', 'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']
# 遍历匹配方法
for meth in methods:# 拷贝图片img_color2 = img_color.copy()img_gray2 = img_gray.copy()# 把字符串转换成代码method = eval(meth)# 模板匹配res = cv2.matchTemplate(img_gray2,template,method)# 获取匹配结果的最大、最小值,及其位置min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)# TM_SQDIFF 和 TM_SQDIFF_NORMED匹配方法:值越小,越相似if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:# 取最小值位置,作为矩形框左上角位置top_left = min_locelse:# 取最大值位置,作为矩形框左上角位置top_left = max_loc# 根据模板尺寸计算出:矩形框右下角位置bottom_right = (top_left[0] + w, top_left[1] + h)# 画矩形框cv2.rectangle(img_color2,top_left, bottom_right, 255, 2)# 显示画好矩形框的图片cv2.namedWindow(meth, cv2.WINDOW_AUTOSIZE)cv2.imshow(meth,img_color2)# 等待退出键cv2.waitKey(0)
# 销毁显示窗口
cv2.destroyAllWindows()

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

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

相关文章

社会科技奖不是新鲜事?如何真正做大

来源:中国科学报我国的社会力量设立科学技术奖励起步于上世纪80年代。科技部网站上2018年9月5日更新的《社会科技奖励目录》显示,目前我国共有269个社会科技奖项登记在册,其中最后一个正是未来科学大奖。11月18日,2018未来科学大奖…

泊松融合——用了拉普拉斯但没有金字塔

图像融合的方式有alpha融合,拉普拉斯金字塔融合。 同样是基于拉普拉斯算子,我们可以直接用求解的方式得到融合后的图像。因为人眼对二阶导是更敏感的,所以只要我们指定了融合区域内部的梯度值,并且知道融合边界处的值&#xff0c…

三层神经网络实现手写字母的识别(基于tensorflow)

数据集的制作参考这篇文章: https://blog.csdn.net/fanzonghao/article/details/81229409 一,读取数据集 import tensorflow as tf import numpy as np import pickle import matplotlib.pyplot as plt #对于x变成(samles,pixs),y变成one_hot (sample…

(转)Kinect背景移除支持多人

原文:http://blogs.msdn.com/b/k4wdev/archive/2013/10/22/using-kinect-background-removal-with-multiple-users.aspx?utm_sourcetuicool Introduction: Background Removal in Kinect for Windows The 1.8 release of the Kinect for Windows Developer Toolkit…

德国汉堡科学院院士张建伟:信息物理系统驱动智能未来

来源:OFweek工控网随着第四次工业革命的到来,信息技术(IT)和运营技术(OT)的融合成为新趋势,工厂开始进入数字化转型阶段,而德国“工业4.0”战略给全球制造业发展带来启示&#xff0c…

两层卷积网络实现手写字母的识别(基于tensorflow)

可和这篇文章对比,https://blog.csdn.net/fanzonghao/article/details/81489049,数据集来源代码和链接一样。 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import read_pickle_datasettrain_dataset,train_label,vali…

焦李成教授谈深度神经网络发展历程

来源:西电人工智能学院摘要:焦李成教授谈深度神经网络发展历程2018年11月18日下午,计算机科学与技术学部主任、人工智能学院焦李成教授在成都参加了由中国人工智能学会主办的人工智能大讲堂并做特邀报告,焦李成教授在报告中回顾了…

KNN实现CIFAR-10数据集识别

cs231n链接:http://cs231n.github.io/linear-classify/, 训练集链接:https://download.csdn.net/download/fanzonghao/10592049 KNN缺点:每个测试样本都要循环一遍训练样本。 该数据集由5个data_batch和一个test_batch构成&…

近期苹果、Facebook等科技巨头股价缘何不断下跌?

来源:资本实验室近期,FAANG(Facebook、亚马逊、苹果、Netflix、谷歌)等科技巨头股价都出现了不同程度的下跌,而美国科技股整体的持续大跌,更是引发了全球股市振荡。其中,亚马逊在今年9月初达曾达到1万亿美元市值&#…

概率论基础知识各种分布

离散分布:伯努力分布,二项分布,possion分布 一,伯努力分布 #执硬币 x_arrnp.array([0,1]) #x为1的概率 p0.7 #0 1分布 #由PMF生成对应的概率 离散事件 pr_arrstats.bernoulli.pmf(x_arr,p) plt.plot(x_arr,pr_arr,markero,lines…

AI 芯片和传统芯片的区别

来源:内容来自「知乎汪鹏 」所谓的AI芯片,一般是指针对AI算法的ASIC(专用芯片)。传统的CPU、GPU都可以拿来执行AI算法,但是速度慢,性能低,无法实际商用。比如,自动驾驶需要识别道路行…

三层神经网络实现手写数字的识别(基于tensorflow)

数据集链接:https://download.csdn.net/download/fanzonghao/10598333 from tensorflow.examples.tutorials.mnist import input_data mnist input_data.read_data_sets("./mnist/", one_hotTrue)import tensorflow as tf# Parameters learning_rate 0…

鼠标终将消失,未来我们有哪些人机交互方式?

来源:资本实验室在人类发明史上,诞生了无数的英雄。他们的发明往往从一项前沿技术到家喻户晓、无处不在,但他们自己却又鲜为人知,美国发明家道格拉斯恩格尔巴特就是其中的代表。20世纪60年代,道格拉斯恩格尔巴特发明了…

两层卷积网络实现手写数字的识别(基于tensorflow)

可和这篇文章对比:https://blog.csdn.net/fanzonghao/article/details/81603367 # coding: utf-8 # ## MNIST数据集from __future__ import division, print_function, absolute_importimport tensorflow as tf# Import MNIST data,MNIST数据集导入 fro…

光波导总结资料

1、写出光波导中的麦克斯韦方程,并把光场分解为纵向分量与横向分量,求出混合模式HE与EH模式的横向电场强度与横向磁场强度的点积(用纵向分量表示)(需要有推导过程) 解:在线性、各向同性且时不变…

德国再出颠覆性发明,这次要安排我们的快递

来源:最黑科技摘要:如果用一句话来形容德国的工业设计,我能想到的就是:“母牛坐电锯——锯牛逼",小编已经不止一次把它吹得五光十色斗转星移~但你可能不知道,这个工业强国在2013年还提出了一个著名的发…

C++中用frugally-deep调用keras的模型并进行预测

1、背景 Python语言中的Keras库搭建深度学习模型非常便捷,但有时需要在 C 中调用训练好的模型,得到测试集的结果。比如将模型部署于FPGA,中间的一个步骤则需要用C构建模型。但 Keras库没有提供 C API,其中一种解决方法是使用 Ten…

简单的线性回归实现模型的存储和读取

和这篇文章对比https://blog.csdn.net/fanzonghao/article/details/81023730 不希望重复定义图上的运算,也就是在模型恢复过程中,不想sess.run(init)首先看路径 lineRegulation_model.py定义线性回归类: import tensorflow as tf "&qu…

MIT重新发明飞机:无需燃料,每秒万米喷射带你上天 | Nature封面

来源:量子位这不是科幻小说,离子引擎飞机真的被造出来了!“曲率引擎”、“离子引擎”等等激动人心的科幻名词,正在走进现实。最近MIT又重新发明了飞机,实验成果登上了《自然》杂志封面。这架飞机翼展5米,总…

unet实现区域分割

https://github.com/zonghaofan/pig-seg/tree/master/disk_segmentation 网络架构: # coding:utf-8 import tensorflow as tf import cv2 import numpy as np import matplotlib.pyplot as pltimg cv2.imread(./data/test.png)# cv2.imshow(1.jpg,img) # cv2.wait…