前置准备

环境介绍

  • Windows 10 Pro
  • Python 3.11
  • OpenCV 4.7.0.68

OpenCV库

以下内容来自维基百科 2023年1月1日

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的IPP进行加速处理。

主要API

cv2.cvtColor(src, code[, dst[, dstCn]])函数

用于将图像从一种颜色空间转换为另一种颜色空间。

1
2
3
4
5
6
7
8
9
cv2.cvtColor(src, code[, dst[, dstCn]])

参数:
src: 它是要更改其色彩空间的图像。
code: 它是色彩空间转换代码。
dst: 它是与src图像大小和深度相同的输出图像。它是一个可选参数。
dstCn: 它是目标图像中的频道数。如果参数为0,则通道数自动从src和代码得出。它是一个可选参数。

返回值:它返回一个图像。

cv2.CascadeClassifier(xml)函数

联级分类器目标检测

1
2
3
4
cv2.CascadeClassifier(xml)

参数:
xml: haar人脸特征分类器 OpenCV源代码中提供有

主要代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import cv2 as cv

def face_detect_demo():
# 转换灰度
gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

# 分类器(OpenCV基于 Haar 级联的人脸检测器)
face_detect = cv.CascadeClassifier("haarcascade_frontalface_alt2.xml")

face = face_detect.detectMultiScale(gary)

# 绘制方框
for x, y, w, h in face:
cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)

# 展示图片
cv.imshow('re_img', img)

# 读取图片
img = cv.imread("./pic/my.png")

face_detect_demo()

while True:
if ord('q') == cv.waitKey(0):
break

cv.destroyAllWindows()