下面我来为您讲解Python实现识别图像中人物的完整攻略,可以分为以下几个步骤:
1. 安装所需库
首先,需要安装以下库:opencv-python、numpy和imutils。您可以通过以下命令来安装它们:
pip install opencv-python
pip install numpy
pip install imutils
2. 下载预训练模型
其次,需要从互联网上下载预训练模型。通常使用的预训练模型是基于Haar特征的级联分类器。您可以从以下网站获取一些预训练模型:
- OpenCV官方文档:https://docs.opencv.org/3.4/db/d28/tutorial_cascade_classifier.html
- Github上的预训练模型:https://github.com/opencv/opencv/tree/master/data/haarcascades
在这里,我们下载人脸检测的预训练模型haarcascade_frontalface_default.xml,将其放在与Python代码相同的文件夹中。
3. 导入所需库和文件
接下来,在Python代码中,导入所需的库和文件,其中包括:
import cv2
import imutils
4. 加载图像
加载您要识别的图像。可以通过以下代码实现:
image = cv2.imread('path/to/image.jpg')
5. 转化为灰度图像
刚才下载的预训练模型是基于灰度图像的,因此需要将图像转换为灰度图像。可以通过以下代码实现:
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
6. 加载预训练模型
加载预训练模型,可通过以下代码实现:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
7. 使用预训练模型检测人脸
使用预训练模型检测人脸,并将结果储存在faces变量中。可通过以下代码实现:
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
其中,detectMultiScale()用于检测人脸,scaleFactor是每次缩小图像时的比例,minNeighbors定义多少个相邻矩形才认为是人脸,minSize定义人脸的最小大小。
8. 绘制检测出的人脸
最后,将检测出的人脸用矩形框标记出来,可通过以下代码实现:
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
这段代码使用cv2.rectangle()函数将矩形框添加到图像中,其中参数依次为:图像image,矩形左上角坐标(x, y),右下角坐标(x+w, y+h),颜色(0, 0, 255),线宽2。
以下是一个示例代码,用于检测图片中的人脸并在人脸周围画一个矩形框:
import cv2
import imutils
image = cv2.imread('path/to/image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
另外一个示例代码可以用于实时检测摄像头中的人脸:
import cv2
import imutils
camera = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
while True:
_, frame = camera.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 2)
cv2.imshow('Result', frame)
if cv2.waitKey(1) == ord('q'):
break
camera.release()
cv2.destroyAllWindows()
希望这些示例可以帮助您理解如何使用Python实现识别图像中人物的功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现识别图像中人物的示例代码 - Python技术站