当前位置:网站首页>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)
边栏推荐
- Redis入门完整教程:客户端通信协议
- LIst 相关待整理的知识点
- Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
- Advanced area of attack and defense world misc 3-11
- Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
- Analysis of environmental encryption technology
- A complete tutorial for getting started with redis: Pipeline
- A complete tutorial for getting started with redis: transactions and Lua
- 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
- 【剑指offer】1-5题
猜你喜欢

Sobel filter

D3.js+Three. JS data visualization 3D Earth JS special effect

SHP data making 3dfiles white film

Redis入门完整教程:慢查询分析
页面关闭前,如何发送一个可靠请求
![[sword finger offer] questions 1-5](/img/54/b70d5290978e842939db99645c6ada.png)
[sword finger offer] questions 1-5

Analysis of the self increasing and self decreasing of C language function parameters

MySQL Architecture - user rights and management

vim编辑器知识总结

【图论】拓扑排序
随机推荐
Serial port data frame
Record: how to scroll screenshots of web pages on Microsoft edge in win10 system?
Redis入門完整教程:Pipeline
金融市场,资产管理与投资基金
Sword finger offer 67 Convert a string to an integer
P2181 diagonal and p1030 [noip2001 popularization group] arrange in order
Wechat official account solves the cache problem of entering from the customized menu
Detailed explanation of heap sort code
Redis introduction complete tutorial: slow query analysis
A complete tutorial for getting started with redis: hyperloglog
Taobao commodity review API interface (item_review get Taobao commodity review API interface), tmall commodity review API interface
JS card style countdown days
Redis getting started complete tutorial: Key Management
String类中的常用方法
Redis入门完整教程:发布订阅
【ODX Studio编辑PDX】-0.2-如何对比Compare两个PDX/ODX文件
VIM editor knowledge summary
PS style JS webpage graffiti board plug-in
页面关闭前,如何发送一个可靠请求
攻防世界 MISC 进阶 glance-50