当前位置:网站首页>Object detection based on OpenCV haarcascades
Object detection based on OpenCV haarcascades
2022-07-04 23:03:00 【Just_ Paranoid】
OpenCV:https://github.com/opencv/opencv
haarcascades - This folder contains a specific type of classifier trained to detect objects , for example Face ( positive 、 The side )、 Pedestrians, etc . Some classifiers have a special license. Please check the file for details .
OpenCV Already contains many for the face , eyes , Pre classifier of smiling face, etc . these XML Files are stored in opencv/data/haarcascades/ In the folder
OpenCV The trainer and detector are attached . If you want a car , Aircraft and any other objects train your own classifier , You can use OpenCV Create a . Its full details are given here : Cascade classifier training .
https://docs.opencv.org/2.4/doc/user_guide/ug_traincascade.html
# openCV Common usage
# Import opencv library
import os
import cv2
# Recognize faces in pictures : Use haarcascade_frontalface_default.xml
def face_detect(img_path):
# Initialize model
detector = cv2.CascadeClassifier('../haarcascades/haarcascade_frontalface_default.xml')
# Initialize window
cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)
# Read the picture
img = cv2.imread(img_path)
# display picture
# cv2.imshow('image', img)
# Convert to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Face detection
dets = detector.detectMultiScale(img_gray, 1.1, 5)
# Get face frame
faces = []
for i, d in enumerate(dets):
x1 = d[0] if d[0] > 0 else 0
y1 = d[1] if d[1] > 0 else 0
x2 = d[0] + d[2] if d[0] + d[2] > 0 else 0
y2 = d[1] + d[3] if d[1] + d[3] > 0 else 0
# Show face box
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Save the picture
cv2.imwrite('../result/face_detect_1.jpg', img)
# Display picture tag face box
# cv2.imshow('image', img)
# Wait for the window to close
# cv2.waitKey(0)
# Eye detection : Use haarcascade_eye_tree_eyeglasses.xml
def eye_detect(img_path):
# Initialize model
detector = cv2.CascadeClassifier('../haarcascades/haarcascade_eye_tree_eyeglasses.xml')
# Initialize window
cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)
# Read the picture
img = cv2.imread(img_path)
# display picture
# cv2.imshow('image', img)
# Convert to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Eye detection
dets = detector.detectMultiScale(img_gray, 1.1, 5)
# Get eye frame
faces = []
for i, d in enumerate(dets):
x1 = d[0] if d[0] > 0 else 0
y1 = d[1] if d[1] > 0 else 0
x2 = d[0] + d[2] if d[0] + d[2] > 0 else 0
y2 = d[1] + d[3] if d[1] + d[3] > 0 else 0
# Show face box
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Save the picture
cv2.imwrite('../result/eye_detect_1.jpg', img)
# Display picture tag face box
cv2.imshow('image', img)
# Wait for the window to close
cv2.waitKey(0)
def eye_detect_save(img_path, filename):
# Initialize model
detector = cv2.CascadeClassifier('../haarcascades/haarcascade_eye_tree_eyeglasses.xml')
# Read the picture
img = cv2.imread(img_path)
# Convert to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Eye detection
dets = detector.detectMultiScale(img_gray, 1.1, 5)
# Get eye frame
faces = []
for i, d in enumerate(dets):
x1 = d[0] if d[0] > 0 else 0
y1 = d[1] if d[1] > 0 else 0
x2 = d[0] + d[2] if d[0] + d[2] > 0 else 0
y2 = d[1] + d[3] if d[1] + d[3] > 0 else 0
# Show face box
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Save the picture
save_path = '../result/' + filename
cv2.imwrite(save_path, img)
# Eye detection : Use haarcascade_eye.xml
def eye_detect_2(img_path):
# Initialize model
detector = cv2.CascadeClassifier('../haarcascades/haarcascade_eye.xml')
# Initialize window
cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)
# Read the picture
img = cv2.imread(img_path)
# display picture
# cv2.imshow('image', img)
# Convert to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Eye detection
dets = detector.detectMultiScale(img_gray, 1.1, 5)
# Get eye frame
faces = []
for i, d in enumerate(dets):
x1 = d[0] if d[0] > 0 else 0
y1 = d[1] if d[1] > 0 else 0
x2 = d[0] + d[2] if d[0] + d[2] > 0 else 0
y2 = d[1] + d[3] if d[1] + d[3] > 0 else 0
# Show face box
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Save the picture
cv2.imwrite('../result/eye_detect2_1.jpg', img)
# Display picture tag face box
cv2.imshow('image', img)
# Wait for the window to close
cv2.waitKey(0)
# Portrait detection :haarcascade_profileface.xml
def profile_face(img_path):
# Initialize model
detector = cv2.CascadeClassifier('../haarcascades/haarcascade_profileface.xml')
# Initialize window
cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)
# Read the picture
img = cv2.imread(img_path)
# display picture
# cv2.imshow('image', img)
# Convert to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Eye detection
dets = detector.detectMultiScale(img_gray, 1.1, 5)
# Get eye frame
faces = []
for i, d in enumerate(dets):
x1 = d[0] if d[0] > 0 else 0
y1 = d[1] if d[1] > 0 else 0
x2 = d[0] + d[2] if d[0] + d[2] > 0 else 0
y2 = d[1] + d[3] if d[1] + d[3] > 0 else 0
# Show face box
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Save the picture
cv2.imwrite('../result/profile_face_6.jpg', img)
# Display picture tag face box
cv2.imshow('image', img)
# Wait for the window to close
cv2.waitKey(0)
# Smile detection :haarcascade_smile.xml
def smile_detect(img_path):
# Initialize model
detector = cv2.CascadeClassifier('../haarcascades/haarcascade_smile.xml')
# Initialize window
cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)
# Read the picture
img = cv2.imread(img_path)
# display picture
# cv2.imshow('image', img)
# Convert to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Eye detection
dets = detector.detectMultiScale(img_gray, 1.1, 5)
# Get eye frame
faces = []
for i, d in enumerate(dets):
x1 = d[0] if d[0] > 0 else 0
y1 = d[1] if d[1] > 0 else 0
x2 = d[0] + d[2] if d[0] + d[2] > 0 else 0
y2 = d[1] + d[3] if d[1] + d[3] > 0 else 0
# Show face box
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Save the picture
cv2.imwrite('../result/smile_detect_1.jpg', img)
# Display picture tag face box
cv2.imshow('image', img)
# Wait for the window to close
cv2.waitKey(0)
if __name__ == '__main__':
print('PyCharm')
# face_detect('../face/face01.jpg')
# eye_detect('../face/face01.jpg')
# eye_detect_2('../face/face01.jpg')
# profile_face('../face/face06.jpg')
# smile_detect('../face/face08.jpg')
# Traverse face Folder Output Eye detection Output Mark to result Folder
for dirpath, dirnames, filenames in os.walk('../face'):
for filename in filenames:
print(os.path.join(dirpath, filename))
eye_detect_save(os.path.join(dirpath, filename), filename)
边栏推荐
- Attack and defense world misc advanced area ditf
- Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click
- UML diagram memory skills
- [odx Studio Edit pdx] - 0.2 - Comment comparer deux fichiers pdx / odx
- [Jianzhi offer] 6-10 questions
- A complete tutorial for getting started with redis: redis shell
- 【机器学习】手写数字识别
- 攻防世界 MISC 进阶区 3-11
- Redis入门完整教程:事务与Lua
- Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
猜你喜欢
OSEK标准ISO_17356汇总介绍
vim编辑器知识总结
Serial port data frame
LabVIEW中比较两个VI
Redis入门完整教程:有序集合详解
Excel 快捷键-随时补充
Qt加法计算器(简单案例)
Editplus-- usage -- shortcut key / configuration / background color / font size
【机器学习】手写数字识别
Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click
随机推荐
Taobao commodity review API interface (item_review get Taobao commodity review API interface), tmall commodity review API interface
Unity Xiuxian mobile game | Lua dynamic sliding function (specific implementation of three source codes)
攻防世界 misc 进阶区 2017_Dating_in_Singapore
JS 3D explosive fragment image switching JS special effect
Editplus-- usage -- shortcut key / configuration / background color / font size
mamp下缺少pcntl扩展的解决办法,Fatal error: Call to undefined function pcntl_signal()
MySQL Architecture - logical architecture
LIst 相关待整理的知识点
OSEK标准ISO_17356汇总介绍
Detailed explanation of heap sort code
Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
该如何去选择证券公司,手机上开户安不安全
Three stage operations in the attack and defense drill of the blue team
【剑指offer】1-5题
【ODX Studio编辑PDX】-0.2-如何对比Compare两个PDX/ODX文件
Create Ca and issue certificate through go language
Redis démarrer le tutoriel complet: Pipeline
UML图记忆技巧
Persistence mechanism of redis
Redis入门完整教程:初识Redis