衡水网站开发报价,小说网站开发教程,平台推广销售话术,北京哪些做网站的公司好一. 实现指定图像的人脸识别
注意#xff1a;
以下实例参考《OpenCV轻松入门面向Python》李立宗著#xff0c;使用python语言#xff0c;编辑器为PyCharm#xff0c;且都运行成功。 1.dface3.jpg图片文件和当前代码放在同一级目录下。 2.级联分类器文件和当前代码文件放在…一. 实现指定图像的人脸识别
注意
以下实例参考《OpenCV轻松入门面向Python》李立宗著使用python语言编辑器为PyCharm且都运行成功。 1.dface3.jpg图片文件和当前代码放在同一级目录下。 2.级联分类器文件和当前代码文件放在同一目录下。 3.获取级联分类器方式 1安装opencv后在其安装目录下的data文件夹内查找xml文件。 2直接在网络上找到相应的XML文件下载并使用。 访问opencv官网 https://opencv.org/ 点进Github在data目录下haarcascade文件夹下寻找需要的级联分类器。 代码如下
import cv2
#读取待检测的图像
imagecv2.imread(dface3.jpg)
#加载了一个训练好的人脸检测器xml文件包含了用于人脸检测的哈尔特征级联分类器
faceCascadecv2.CascadeClassifier(./haarcascade_frontalface_default.xml)
#将图像转换成灰度图像
graycv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#调用detectMultiScale()函数在灰度图像上检测人脸函数会返回一个列表每个表示一个检测到的人脸
facesfaceCascade.detectMultiScale(gray,scaleFactor1.15,minNeighbors5,minSize(5,5)
)
print(faces)
print(发现{0}个人脸.format(len(faces)))
#在原始图像上绘制矩形框框出检测到的人脸
for(x,y,w,h) in faces:cv2.rectangle(image,(x,y),(xw,yw),(0,255,0),2)
cv2.imshow(tect,image)
cv2.imwrite(re.jpg,image)
cv2.waitKey(0)
cv2.destroyAllWindows()
detectMultiScale():
是一个用于检测目标的函数其中包含了以下几个参数
参数1image需要进行检测的输入图像通常是灰度图像。
参数2scaleFactor在每个图像尺度上进行尺度变换时的缩放比例。这个参数用于多尺度检测允许算法检测不同尺寸的目标。例如如果设置为 1.1意味着算法会逐渐缩小图像的尺寸进行检测。
参数3minNeighbors每个候选矩形应该保留的邻近数。这个参数可以帮助去除一些虚假的检测结果。较大的值会导致更少的检测框但是这些检测框更可能是真实的目标。
参数4minSize目标的最小尺寸。只有大于等于这个尺寸的目标才会被检测到。这个参数可以用于排除一些小目标以减少虚假检测。
参数5flags它是一个可选的参数用于调整算法的行为。通常情况下我们可以使用默认值0。
返回值这个函数返回一个矩形列表表示检测到的目标的位置和大小。通常情况下每个矩形都是一个四元组 (x, y, width, height)分别表示目标左上角的坐标以及目标的宽度和高度。
cv2.rectangle()
是 OpenCV 库中用于在图像上绘制矩形的函数,其中包含几个参数 image需要绘制矩形的图像通常是一个 NumPy 数组表示的图像对象。
pt1矩形的左上角坐标是一个元组 (x1, y1)其中 x1 是矩形左上角的横坐标y1 是矩形左上角的纵坐标。
pt2矩形的右下角坐标也是一个元组 (x2, y2)其中 x2 是矩形右下角的横坐标y2 是矩形右下角的纵坐标。(xw, yh) 是矩形框的右下角坐标xw 表示矩形右边界的横坐标yh 表示矩形底边界的纵坐标。
color矩形的颜色通常以 BGR 格式表示即一个包含三个整数值的元组 (B, G, R)其中 B、G、R 分别代表蓝色、绿色、红色的通道值。(0, 255, 0) 表示纯绿色。
thickness矩形的线条宽度以像素为单位。如果指定为负值表示填充整个矩形区域。默认为1。
lineType线条类型默认为8连接线。你可以选择不同的线条类型如8连接、4连接等。
shift偏移量默认为0。这个参数通常不需要指定除非你需要对图像进行一些特殊处理。
二. 捕获摄像头视频
opencv通过从cv2.VideoCapture提供了非常方便的捕获摄像头视频的方法。 代码如下
import cv2
#从指定的设备中获取视频流
capcv2.VideoCapture(0)
while(cap.isOpened()):ret, frame cap.read()cv2.imshow(frame,frame)c cv2.waitKey(1)if c 27:break
cap.release()
cv2.destroyAllWindows()cv2.VideoCapture()
参数为 0代表使用默认的摄像头设备通常是计算机上内置的摄像头如果你有多个摄像头可以通过不同的参数值来选择不同的摄像头。例如cv2.VideoCapture(1) 表示选择第二个摄像头。也可以传入视频文件的路径作为参数以便从文件中读取视频流。
三.实现视频人脸识别
代码如下
import cv2
import numpy as np
#创建了一个VideoCapture对象cap用于捕获视频0表示打开默认的摄像头
capcv2.VideoCapture(0)
#加载人脸识别检测器
faceCascadecv2.CascadeClassifier(./haarcascade_frontalface_default.xml)
#只要摄像头处于打开状态就一直运行
while(cap.isOpened()):#使用read方法从摄像头捕获一帧ret是个布尔值表示是否成功读取帧frame是捕获的视频帧ret,framecap.read()if ret:#对每个帧进行解析#将每一帧转换为灰度图像gray_imagecv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)facesfaceCascade.detectMultiScale(gray_image,scaleFactor1.15,minNeighbors5,minSize(5,5))#逐个标注检测到的人脸for(x,y,w,h) in faces:cv2.rectangle(frame,(x,y),(xw,yw),(0,255,0),2)cv2.imshow(detect,frame)#按esc键控制退出ccv2.waitKey(1)if c27:breakelse:break
cap.release()
cv2.destroyAllWindows()