用opencv写一段人脸识别代码
时间: 2023-04-05 16:05:24 浏览: 132
我可以回答这个问题。以下是一个简单的基于OpenCV的人脸识别代码示例:
```python
import cv2
# 加载人脸识别分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载图像
img = cv2.imread('test.jpg')
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 在图像中标记人脸
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
# 显示图像
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码使用OpenCV的人脸识别分类器来检测图像中的人脸,并在图像中标记出来。
相关问题
写一段OpenCV代码,实现人脸识别、人脸录入
在Python中使用OpenCV库进行人脸识别和人脸录入通常涉及到Haar级联分类器和Local Binary Patterns Histograms (LBPH)等算法。以下是一个简单的示例,展示如何使用这些技术:
```python
import cv2
import numpy as np
# 加载预训练的人脸检测模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 加载或创建用于存储人脸特征的LBPH识别人脸的模型
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('faces.yml') # 假设已经有一个存储了已知人脸的数据文件
# 捕获摄像头视频流
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 在灰度图像上检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
# 提取人脸区域并进行缩放以适应识别器
roi_gray = gray[y:y+h, x:x+w]
roi_color = frame[y:y+h, x:x+w]
# 对提取的人脸进行识别
id_, confidence = recognizer.predict(roi_gray)
if confidence < 70: # 设置一个阈值判断识别结果的可靠性
name = "Unknown" if id_ == -1 else "Person {}".format(id_) # 如果是未知人脸,则标记为"Unknown"
color = (0, 255, 0) if id_ != -1 else (0, 0, 255) # 绿色表示已知,红色表示未知
cv2.putText(frame, name, (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2)
cv2.rectangle(frame, (x, y), (x+w, y+h), color, 2)
# 显示处理后的帧
cv2.imshow("Face Recognition", frame)
# 按 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
在这个例子中,你需要预先收集一些人脸样本,并将其标识为特定个体,然后保存到`faces.yml`这样的数据文件中。请注意,这只是一个基础示例,实际应用中可能需要对人脸进行预处理和增强,以便提高识别精度。
给我一段基于opencv-python的人脸识别代码
以下是一个基于OpenCV-Python的简单人脸识别代码:
```python
import cv2
# 加载人脸识别分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载图像
img = cv2.imread('test.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 绘制矩形框
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 显示图像
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个代码使用了OpenCV-Python提供的Haar级联分类器来检测人脸。首先加载了一个分类器,然后读取了一张测试图像,并将图像转换为灰度图像。接着,使用`detectMultiScale()`函数检测人脸,并返回一个矩形框的列表。最后,使用`rectangle()`函数在图像上绘制矩形框,并展示结果。
阅读全文