这是我参与更文挑战的第13天,活动详情查看: 更文挑战
OpenCV
是一个C++
库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python
中常使用OpenCV
库实现图像处理。
本文将介绍如何在Python3
中使用OpenCV
实现图片微笑检测:
参考:
Opencv4 官方文档 : docs.opencv.org/4.2.0/
准备工作:
下载特征分类模型:
XML模型库:github.com/opencv/open…
1.找到haarcascade_smile.xml
文件,点击进去。如果想尝试检测其它特征区域,下载对应的xml
文件即可。
2.找到Raw
,右键链接(目标)另存为。
实现过程
调用模型库文件
将刚才下载好的模型库文件导入到程序中
代码实现:
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()
复制代码
实现结果:
本月将陆续推出相关系列文章,
篇篇精彩,尽请关注。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END