哪些知名网站域名在国内注册,如何设置wordpress静态页面,江西火电建设公司网站,济南网站建设找聚搜网络简介
本文用Python、Dlib 和 OpenCV 库来检测图像中的人脸#xff0c;并在人脸上绘制矩形框进行窗口显示。
环境准备
在开始之前#xff0c;请确保您的计算机上已安装 Python。此外#xff0c;您还需要安装以下库#xff1a;
dlib#xff1a;一个包含多种机器学习算法…简介
本文用Python、Dlib 和 OpenCV 库来检测图像中的人脸并在人脸上绘制矩形框进行窗口显示。
环境准备
在开始之前请确保您的计算机上已安装 Python。此外您还需要安装以下库
dlib一个包含多种机器学习算法的库包括人脸检测。opencv-python即 OpenCV一个强大的计算机视觉库用于图像处理和视频分析。numpy一个用于科学计算的库用于处理多维数组和矩阵。
您可以使用 pip 来安装这些库
pip install dlib opencv-python numpy另外dlib的安装可能出现问题可以参考该文https://blog.csdn.net/qq_43466323/article/details/120855699
代码解析
import dlib
import cv2
import numpy as np
from pathlib import Path
from time import time# 加载dlib人脸检测器
detector dlib.get_frontal_face_detector()def read_image(file, flags1):读取图像特别适合文件路径出现中文的情况return cv2.imdecode(np.fromfile(file, np.uint8), flags)def scale_image(img, max_width1920, max_height1080):比例缩放图片# 获取原始图片的尺寸height, width img.shape[:2]# 只有图片宽度或高度超出指定范围才缩放图片if width max_width or height max_height:# 计算缩放比例ratio min(max_width / width, max_height / height)else:ratio 1# 缩放图片return cv2.resize(img, None, fxratio, fyratio)def detect_image(img):人脸检测并绘制人脸矩形框 # 只对BGR图转化灰度图gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 检测人脸faces detector(gray)# 绘制人脸矩形框for face in faces:x, y, w, h face.left(), face.top(), face.width(), face.height()cv2.rectangle(img, (x, y), (x w, y h), (0, 255, 0), 2)return imgdef run(file):将绘制人脸矩形框的图片进行显示start_time time()# 人脸检测img detect_image(scale_image(read_image(file)))# 计算人脸检测耗时并作为窗口标题显示win_name fduration:{time() - start_time:.2f}cv2.imshow(win_name, img)key cv2.waitKey()cv2.destroyAllWindows()return keydef run_many(dir_path):依次检测指定目录的图片并显示print(温馨提示按q键退出其他按键切换图片)for file in Path(dir_path).iterdir():# 按q键退出if ord(q) run(file):break导入库
import dlib
import cv2
import numpy as np
from pathlib import Path
from time import time这段代码导入了我们所需的所有外部库。
初始化人脸检测器
detector dlib.get_frontal_face_detector()这行代码初始化了 Dlib 的人脸检测器用于后续的人脸检测操作。
读取图像函数
def read_image(file, flags1):return cv2.imdecode(np.fromfile(file, np.uint8), flags)这个函数用于读取图像文件特别适合处理包含中文路径的文件。
缩放图像函数
def scale_image(img, max_width1920, max_height1080):height, width img.shape[:2]if width max_width or height max_height:ratio min(max_width / width, max_height / height)else:ratio 1return cv2.resize(img, None, fxratio, fyratio)这个函数用于按比例缩放图像以确保图像的宽度和高度不会超过指定的最大值。
人脸检测函数
def detect_image(img):gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces detector(gray)for face in faces:x, y, w, h face.left(), face.top(), face.width(), face.height()cv2.rectangle(img, (x, y), (x w, y h), (0, 255, 0), 2)return img这个函数将图像转换为灰度图然后使用 Dlib 的检测器来检测人脸并在每个检测到的人脸周围绘制一个绿色的矩形框。
运行检测函数主函数
def run(file):start_time time()img detect_image(scale_image(read_image(file)))win_name fduration:{time() - start_time:.2f}cv2.imshow(win_name, img)key cv2.waitKey()cv2.destroyAllWindows()return key这个函数读取一个图像文件对其进行缩放和人脸检测然后显示结果。
批量检测函数主函数
def run_many(dir_path):print(温馨提示按q键退出其他按键切换图片)for file in Path(dir_path).iterdir():if ord(q) run(file):break这个函数遍历指定目录下的所有图像文件并使用 run 函数对每个文件进行人脸检测和显示。