Python |用于对象检测的哈尔级联
原文:https://www . geesforgeks . org/python-Haar-cascades-for-object-detection/
目标检测是一种与计算机视觉、图像处理和深度学习相关的计算机技术,用于检测图像和视频中的目标实例。在本文中,我们将使用哈尔级联来进行物体检测。
什么是哈尔喀斯喀特?
哈尔级联分类器是一种有效的目标检测方法。这种方法是由保罗·维奥拉和迈克尔·琼斯在他们的论文中提出的,利用简单特征的增强级联快速检测目标。哈尔级联是一种基于机器学习的方法,其中使用大量的正图像和负图像来训练分类器。
- 正面图像–这些图像包含我们希望分类器识别的图像。
- 负像–其他一切的像,不包含我们想要检测的物体。
要求:
- 确保你的电脑上安装了 python、Matplotlib 和 OpenCV(所有最新版本)。
- 哈尔级联文件可以从 OpenCV Github 资源库下载。
实施T2】
Python 3
# Importing all required packages
import cv2
import numpy as np
import matplotlib.pyplot as plt % matplotlib inline
# Read in the cascade classifiers for face and eyes
face_cascade = cv2.CascadeClassifier('../DATA / haarcascades / haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('../DATA / haarcascades / haarcascade_eye.xml')
# create a function to detect face
def adjusted_detect_face(img):
face_img = img.copy()
face_rect = face_cascade.detectMultiScale(face_img,
scaleFactor = 1.2,
minNeighbors = 5)
for (x, y, w, h) in face_rect:
cv2.rectangle(face_img, (x, y),
(x + w, y + h), (255, 255, 255), 10)\
return face_img
# create a function to detect eyes
def detect_eyes(img):
eye_img = img.copy()
eye_rect = eye_cascade.detectMultiScale(eye_img,
scaleFactor = 1.2,
minNeighbors = 5)
for (x, y, w, h) in eye_rect:
cv2.rectangle(eye_img, (x, y),
(x + w, y + h), (255, 255, 255), 10)
return eye_img
# Reading in the image and creating copies
img = cv2.imread('../sachin.jpg')
img_copy1 = img.copy()
img_copy2 = img.copy()
img_copy3 = img.copy()
# Detecting the face
face = adjusted_detect_face(img_copy)
plt.imshow(face)
# Saving the image
cv2.imwrite('face.jpg', face)
代码:探测眼睛
Python 3
eyes = detect_eyes(img_copy2)
plt.imshow(eyes)
cv2.imwrite('face_eyes.jpg', eyes)
代码:检测脸部和眼睛
Python 3
eyes_face = adjusted_detect_face(img_copy3)
eyes_face = detect_eyes(eyes_face)
plt.imshow(eyes_face)
cv2.imwrite('face+eyes.jpg', eyes_face)
哈尔级联可以用来检测任何类型的对象,只要你有合适的 XML 文件。您甚至可以从头开始创建自己的 XML 文件来检测您想要的任何类型的对象。
版权属于:月萌API www.moonapi.com,转载请注明出处