opencv-python通过级联器识别手口眼代码
时间: 2023-07-30 16:10:18 浏览: 91
OpenCV-Python 4.5.4 人脸识别应用模型文件
使用OpenCV-Python库中的级联器(Cascade Classifier)可以实现基于Haar特征的目标检测。以下是一个示例代码,可以使用级联器识别手、口、眼等部位。
```python
import cv2
# 加载级联器
hand_cascade = cv2.CascadeClassifier('hand.xml')
face_cascade = cv2.CascadeClassifier('face.xml')
eye_cascade = cv2.CascadeClassifier('eye.xml')
# 读取输入图像
img = cv2.imread('input_image.jpg')
# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用级联器进行目标检测
hands = hand_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
eyes = eye_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# 在检测到的目标周围绘制矩形框
for (x,y,w,h) in hands:
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
for (x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w,y+h), (0,0,255), 2)
for (x,y,w,h) in eyes:
cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
# 显示输出图像
cv2.imshow('output', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先加载了三个级联器(hand.xml、face.xml和eye.xml),它们分别用于检测手、脸和眼睛。然后,我们读取输入图像并将其转换为灰度图像。接下来,我们使用detectMultiScale()函数执行目标检测,并将检测到的目标用矩形框标记出来。最后,我们使用imshow()函数显示输出图像。需要注意的是,级联器的准确性和效率取决于其训练数据集的质量和大小,因此可能需要尝试多个级联器并进行参数调整才能获得最佳结果。
阅读全文