吴裕雄 实战PYTHON编程(10)
import cv2
cv2.namedWindow("frame")
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
ret, img = cap.read()
if ret == True:
cv2.imshow("frame", img)
k = cv2.waitKey(100)
if k == ord("z") or k == ord("Z"):
cv2.imwrite("F:\\pythonBase\\pythonex\\catch.jpg", img)
break
cap.release()
cv2.waitKey(10000)
cv2.destroyWindow("frame")
def makeFace(facename, msg, endstr):
print(msg) #显示提示信息
cv2.namedWindow("frame")
cv2.waitKey(0)
cap = cv2.VideoCapture(0) #打开摄像头
while(cap.isOpened()): #如果摄像头处于打开状态,则...
ret, img = cap.read() #读取图像
if ret == True: #读取成功
cv2.imshow("frame", img) #显示图像
k = cv2.waitKey(100) #每0.1秒读一次键盘
if k == ord("z") or k == ord("Z"): #如果输入z
cv2.imwrite(facename,img) #把读取的img保存至facename文件
image = cv2.imread(facename) #读取刚刚保存的facename文件至image变量,作为下面人脸识别函数的参数
faces = faceCascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
(x, y, w, h) = (faces[0][0], faces[0][1], faces[0][2], faces[0][3]) #取出第一张人脸区域
image1 = Image.open(facename).crop((x, y, x+w, y+h)) #抓取人脸区域的图像并存至image1变量
image1 = image1.resize((200, 200), Image.ANTIALIAS) #把取得的人脸区域的分辨率变为200x200
image1.save(facename) #把经过处理的人脸文件保存至facename文件
break;
cap.release() #关闭摄像头
cv2.destroyAllWindows() #关闭窗口
print(endstr)
return
import cv2, os, math, operator
from PIL import Image
from functools import reduce
# casc_path = "C:\\ProgramData\\Anaconda3\\pkgs\\opencv3-3.1.0-py27_0\\Library\etc\\haarcascades\\haarcascade_frontalface_default.xml"
casc_path = "C:\\Users\\acer\\Anaconda3\\envs\\python36\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(casc_path) #创建识别对象
recogname = "F:\\pythonBase\pythonex\\ch10\\media\\recogface.jpg" #预存的人脸文件
loginname = "F:\\pythonBase\pythonex\\ch10\\media\\loginface.jpg" #登录者的人脸文件
os.system("cls") #清屏
if(os.path.exists(recogname)): #如果预存的人脸文件已存在
msg = "按任意键创建登录人脸文件。\n摄像头打开后按z键进行拍照对比!"
makeFace(loginname, msg, "") #创建登录者人脸文件
pic1 = Image.open(recogname) #打开预存的人脸文件
pic2 = Image.open(loginname) #打开登录者人脸文件
h1 = pic1.histogram() #取预存片文件的直方图信息
h2 = pic2.histogram() #取登录者图片的直方图信息
diff = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2, h1, h2)))/len(h1)) #计算两个图形差异度
if(diff <= 100): #若差度在100内,可通过验证
print("通过验证,欢迎使用本系统! diff=%4.2f" % diff)
else:
print("人脸错误,无法使用本系统! diff=%4.2f" % diff)
else: #如果预存的人脸文件不存在
msg = "按任意键创建预存的人脸文件。\n摄像头打开后按z进行拍照!\n"
endstr = "预存文件建立完成!"
makeFace(recogname, msg, endstr) #建立预存人脸文件

吴裕雄 实战PYTHON编程(10)的更多相关文章
- 吴裕雄 实战PYTHON编程(9)
import cv2 cv2.namedWindow("ShowImage1")cv2.namedWindow("ShowImage2")image1 = cv ...
- 吴裕雄 实战PYTHON编程(7)
import os from win32com import client word = client.gencache.EnsureDispatch('Word.Application')word. ...
- 吴裕雄 实战PYTHON编程(6)
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['Simhei']plt.rcParams['axes.unicode ...
- 吴裕雄 实战PYTHON编程(8)
import pandas as pd df = pd.DataFrame( {"林大明":[65,92,78,83,70], "陈聪明":[90,72,76, ...
- 吴裕雄 实战PYTHON编程(5)
text = '中华'print(type(text))#<class 'str'>text1 = text.encode('gbk')print(type(text1))#<cla ...
- 吴裕雄 实战PYTHON编程(4)
import hashlib md5 = hashlib.md5()md5.update(b'Test String')print(md5.hexdigest()) import hashlib md ...
- 吴裕雄 实战python编程(3)
import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com'html = requests.get(url)sp ...
- 吴裕雄 实战python编程(2)
from urllib.parse import urlparse url = 'http://www.pm25x.com/city/beijing.htm'o = urlparse(url)prin ...
- 吴裕雄 实战python编程(1)
import sqlite3 conn = sqlite3.connect('E:\\test.sqlite') # 建立数据库联接cursor = conn.cursor() # 建立 cursor ...
随机推荐
- R(1):中文乱码解决方案
读取csv文件出现中文乱码方案,增加编码格式参数 read.csv(trainPath,header=TRUE,stringsAsFactors=TRUE,encoding = "UTF-8 ...
- npm使用入门(package.json)
npm使用入门 crazygit 关注 2017.03.10 18:31 字数 1773 阅读 1617评论 0喜欢 10 NPM是什么 npm npm makes it easy for JavaS ...
- java枚举使用详解,整理的很好,只能收下。。。
java枚举使用详解 在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素 ...
- 【转】C# 根据当前时间获取,本周,本月,本季度等时间段 .Net中Exception
1 DateTime dt = DateTime.Now; //当前时间 2 3 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayO ...
- ubuntu修改Bash命令行提示符
用户通过远程登陆,初始的PS1为\s-\v\$, bash为/bin/bash,然后先后执行/etc/profile和~/.bash_profile中的命令. /etc/profile文件中调用执行/ ...
- python 命名元组(namedtuple)
我们知道c/c++语言中,有结构体这种数据类型: struct{ string name; int age; char sex; }student; 在对结构体对象进行赋值或者取值时可以使用.运算 ...
- Noip知识点备考
作为一个oier,适当的整理是有必要的.蒟蒻根据自己的理解,筛选出考noip应当掌握的知识点.可能后期还有解题思路和模板,先挖个坑慢慢补呗. 60级张炳琪Noip知识点总结 可能是本人比较弱,写的内容 ...
- 在windows 下将 chm 格式的文件 转换成 html 的文件
有时我们可能需要将 chm 格式的文件 转换成 html 格式的网页文件,这时,如果你使用的是 windows 操作系统,那就可以用 windows 操作系统自带的反编译工具来完成这项任务,具体步骤: ...
- Python分页转Mybatis pagehelper格式分页
最近工作里遇到一个需求要把之前用Java写的一个http接口替换成用Python写的,出参是带了mybatis pageHelper中PageInfo信息的一个JSON串,而Python这边分页不会涉 ...
- 从最大似然函数 到 EM算法详解
极大似然算法 本来打算把别人讲的好的博文放在上面的,但是感觉那个适合看着玩,我看过之后感觉懂了,然后实际应用就不会了.... MLP其实就是用来求模型参数的,核心就是“模型已知,求取参数”,模型的意思 ...