【Python3-OpenCV】实现图片微笑检测篇

这是我参与更文挑战的第13天,活动详情查看: 更文挑战

OpenCV是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python中常使用OpenCV库实现图像处理。

image.png

本文将介绍如何在Python3中使用OpenCV实现图片微笑检测:

参考:
Opencv4 官方文档
: docs.opencv.org/4.2.0/

准备工作:

下载特征分类模型:
XML模型库:github.com/opencv/open…

1.找到haarcascade_smile.xml文件,点击进去。如果想尝试检测其它特征区域,下载对应的xml文件即可。

image.png
2.找到Raw,右键链接(目标)另存为。

image.png

实现过程

调用模型库文件

将刚才下载好的模型库文件导入到程序中

代码实现:

smile_cascade = cv2.CascadeClassifier('E:\\demo\\haarcascade_smile.xml')')
复制代码

检测目标

detecMultiScale()函数用于检测目标。

如果在图像中检测到一个微笑,我们可以用x,y,w,h的形式返回结果。

这是因为检测结果需要一些参数,以用来绘制检测区域。

smiles  = smile_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 53)
复制代码

绘制目标框

得到了检测目标的位置参数后,我们可以用cv2.rectangle()函数绘制目标框。

for (sx, sy, sw, sh) in smiles:
            cv2.rectangle(image, (sx, sy), ((sx + sw), (sy + sh)), (0, 255,0), 5)
复制代码

完整代码

import cv2

image = cv2.imread("E:\\demo\\smile.jpg")
smile_cascade = cv2.CascadeClassifier('E:\\demo\\haarcascade_smile.xml')
smiles  = smile_cascade.detectMultiScale(image, scaleFactor = 1.2, minNeighbors = 53)

for (sx, sy, sw, sh) in smiles:
            cv2.rectangle(image, (sx, sy), ((sx + sw), (sy + sh)), (0, 255,0), 5)
            cv2.putText(image, 'Smile', (sx, sy - 7), 3, 1.2, (0, 0, 255), 2, cv2.LINE_AA)

cv2.imshow("Smile Detected", image)

cv2.waitKey(0)
cv2.destroyAllWindows()
复制代码

实现结果:

image.png

本月将陆续推出相关系列文章,

篇篇精彩,尽请关注。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享