当前位置:网站首页>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 Erik baleog and Olaf
- Photoshop批量给不同的图片添加不同的编号
- 智力考验看成语猜古诗句微信小程序源码
- A complete tutorial for getting started with redis: transactions and Lua
- C语言快速解决反转链表
- MySQL Architecture - logical architecture
- Editplus-- usage -- shortcut key / configuration / background color / font size
- Analysis of the self increasing and self decreasing of C language function parameters
- Excel 快捷键-随时补充
- Redis入门完整教程:客户端通信协议
猜你喜欢

Redis入门完整教程:哈希说明

共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf

位运算符讲解

Redis introduction complete tutorial: client communication protocol

A complete tutorial for getting started with redis: Pipeline
![P2181 diagonal and p1030 [noip2001 popularization group] arrange in order](/img/79/36c46421bce08284838f68f11cda29.png)
P2181 diagonal and p1030 [noip2001 popularization group] arrange in order

SHP data making 3dfiles white film

攻防世界 MISC 进阶区 can_has_stdio?
![P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列](/img/79/36c46421bce08284838f68f11cda29.png)
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列

Advanced area a of attack and defense world misc Masters_ good_ idea
随机推荐
Pagoda 7.9.2 pagoda control panel bypasses mobile phone binding authentication bypasses official authentication
Qt加法计算器(简单案例)
[ODX studio edit PDX] - 0.2-how to compare two pdx/odx files of compare
Redis入门完整教程:Redis使用场景
Redis introduction complete tutorial: slow query analysis
Analog rocker controlled steering gear
MySQL Architecture - logical architecture
剑指 Offer 67. 把字符串转换成整数
Sword finger offer 67 Convert a string to an integer
Redis getting started complete tutorial: Geo
Notepad++ -- editing skills
Feature scaling normalization
Attack and defense world misc master advanced zone 001 normal_ png
MP进阶操作: 时间操作, sql,querywapper,lambdaQueryWapper(条件构造器)快速筛选 枚举类
Analysis of environmental encryption technology
Summary of wechat applet display style knowledge points
Taobao commodity review API interface (item_review get Taobao commodity review API interface), tmall commodity review API interface
【剑指offer】1-5题
【剑指Offer】6-10题
Redis getting started complete tutorial: Key Management