python怎么利用opencv图像转换,噪声消除和边缘检测 进行人脸检测
时间: 2024-06-11 15:09:41 浏览: 68
利用opencv进行人脸检测的步骤如下:
1. 导入所需库文件
```
import cv2
import numpy as np
```
2. 加载人脸分类器
```
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
```
其中,'haarcascade_frontalface_default.xml'是opencv中自带的人脸分类器文件。
3. 加载图片并进行灰度化处理
```
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
4. 进行噪声消除
```
gray = cv2.GaussianBlur(gray, (5, 5), 0)
```
5. 进行边缘检测
```
edges = cv2.Canny(gray, 50, 150)
```
6. 进行人脸检测
```
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)
```
其中,detectMultiScale函数可以检测出图片中的所有人脸,并返回每个人脸的坐标和大小。
7. 显示结果
```
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
完整代码如下:
```
import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
edges = cv2.Canny(gray, 50, 150)
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()
```
其中,test.jpg为待检测的图片,可以替换成其他图片。
阅读全文