当前位置: 首页 > wzjs >正文

ps网站制作教程腾讯竞价广告

ps网站制作教程,腾讯竞价广告,动漫制作专业实训,网络服务提供者发现未成年秘密信息应采取Haar CascadeXML特征分类器,是一种基于机器学习的方法,它利用了积分图像(或总面积)的概念有效地提取特征(例如,边缘、线条等)的数值。“级联分类器”即意味着不是一次就为图像中的许多特征应用数百个分类器,而是一对一地应用分类器…

        Haar CascadeXML特征分类器,是一种基于机器学习的方法,它利用了积分图像(或总面积)的概念有效地提取特征(例如,边缘、线条等)的数值。“级联分类器”即意味着不是一次就为图像中的许多特征应用数百个分类器,而是一对一地应用分类器。

        利用OpenCV自带的xml文件,可以实时检测摄像头中人脸Haar特征或LBP特征,它们描述不同的局部信息。

opencv自带Haar级联分离器XML文件

        opencv自带的Haar级联特征分类器都位于cv2/data这个文件夹下,检测的对象和内容都包含在名称里。

导入并初始化分类器

自动获取xml文件路径

为了更方便的获取路径来导入,我们就可以使用sys.modules模块来获取这些文件的路径

#导入各个分类器xml文件
import sys
facehaar=sys.modules['cv2.data'].__file__.replace('__init__.py','haarcascade_frontalface_default.xml')
eyehaar=sys.modules['cv2.data'].__file__.replace('__init__.py','haarcascade_eye.xml')
smilehaar=sys.modules['cv2.data'].__file__.replace('__init__.py','haarcascade_smile.xml')
print(facehaar)

初始化分类器

#初始化各个分类器
face_detector=cv2.CascadeClassifier(facehaar)
eye_detector=cv2.CascadeClassifier(eyehaar)
smile_detector=cv2.CascadeClassifier(smilehaar)

detectMutiScale函数

在进行检测时,我们主要用的detectMutiScale这个函数,使用前需要先定义分类器

#检测人脸
'''
detecMultiScale()函数参数详解:
image: 8-bit灰度图像
scaleFactor: float=1.1 图像金字塔缩放比例(每次缩小倍数),值越小检测越精细但速度越慢。
minNeighbors:int=3  候选矩形需有的最少相邻矩形数,值越大误检越少但可能漏检。
minSize:tuple 目标最小尺寸(如 (30, 30))主要用来忽略更小的区域以加速检测。
maxSize:tuple 目标最大尺寸(如 (100, 100))主要用来忽略更大的区域。
'''
faces=face_detector.detectMultiScale(image=gray_image,scaleFactor=1.15,minNeighbors=5)
mark_image=src_image.copy()
mark_image_gray=gray_image.copy()
for x,y,w,h in faces:cv2.rectangle(mark_image,(x,y),(x+w,y+h),(0,255,0),3)cv2.rectangle(mark_image_gray,(x,y),(x+w,y+h),0,3)
plt.subplot(1,2,1),plt.imshow(mark_image),plt.text(x=x,y=y,s='人脸')
plt.subplot(1,2,2),plt.imshow(mark_image_gray,cmap='gray'),plt.text(x=x,y=y,s='人脸')

detecMultiScale函数参数详解:

​​参数​​​​类型​​​​默认值​​​​说明​​
image8-bit 灰度图像输入的单通道灰度图像,需先通过 cv2.cvtColor() 转换。
scaleFactorfloat1.1图像金字塔缩放比例(每次缩小倍数),值越小检测越精细但速度越慢。
minNeighborsint3候选矩形需有的最少相邻矩形数,值越大误检越少但可能漏检。
minSizetuple (w, h)None目标最小尺寸(如 (30, 30),用来忽略更小的区域以加速检测。
maxSizetuple (w, h)None目标最大尺寸(如 (100, 100),用来忽略更大的区域。

 这里的这个minNeighbors参数与KNN中的K值有一些相似之处:

  • 两者都通过“邻居数量”过滤噪声或不确定性。
  • 值越大,结果越保守(漏检增多或分类边界更平滑);值越小,结果越敏感(误检增多或过拟合风险)。

detectMultiscale函数最终的返回值为list([x,y,w,h])即测到的目标矩形列表(左上角坐标 + 宽高)

如果有需要的话,我们还可以使用cv2.rectangle将检测到的目标在原始图像中绘制出来。

检测任务

        在检测时,我们只需要使用分类器.detectMultiScale即可进行后续的检查任务,这里我们以人脸,眼镜,以及微笑为例来进一步说明具体的使用方法。

读取图像

import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
src_image=cv2.imread(filename='strongman.jpg',flags=cv2.IMREAD_COLOR_RGB)
height,width=src_image.shape[:2]
plt.title('原始图像')
plt.xticks(ticks=range(0,width,10),minor=True)
plt.yticks(ticks=range(0,height,10),minor=True)
plt.imshow(src_image)

转为灰度图 

#转灰度图
gray_image=cv2.cvtColor(src=src_image,code=cv2.COLOR_RGB2GRAY)
plt.title('灰度图像')
plt.xticks(ticks=range(0,width,10),minor=True)
plt.yticks(ticks=range(0,height,10),minor=True)
plt.imshow(gray_image,cmap='gray')

导入要用到的XML文件 

#导入各个分类器xml文件
import sys
facehaar=sys.modules['cv2.data'].__file__.replace('__init__.py','haarcascade_frontalface_default.xml')
eyehaar=sys.modules['cv2.data'].__file__.replace('__init__.py','haarcascade_eye.xml')
smilehaar=sys.modules['cv2.data'].__file__.replace('__init__.py','haarcascade_smile.xml')

初始化各个分类器 

#初始化各个分类器
face_detector=cv2.CascadeClassifier(facehaar)
eye_detector=cv2.CascadeClassifier(eyehaar)
smile_detector=cv2.CascadeClassifier(smilehaar)

人脸检测

#检测人脸
faces=face_detector.detectMultiScale(image=gray_image,scaleFactor=1.15,minNeighbors=5)
mark_image=src_image.copy()
mark_image_gray=gray_image.copy()
for x,y,w,h in faces:cv2.rectangle(mark_image,(x,y),(x+w,y+h),(0,255,0),3)cv2.rectangle(mark_image_gray,(x,y),(x+w,y+h),0,3)
plt.subplot(1,2,1),plt.imshow(mark_image),plt.text(x=x,y=y,s='人脸')
plt.subplot(1,2,2),plt.imshow(mark_image_gray,cmap='gray'),plt.text(x=x,y=y,s='人脸')

分割人脸

faces_color=src_image[y:y+h,x:x+w]
faces_gray=gray_image[y:y+h,x:x+w]
plt.subplot(1,2,1),plt.imshow(faces_color)
plt.subplot(1,2,2),plt.imshow(faces_gray,cmap='gray')

 眼睛与微笑检测

#眼睛与微笑检测
mark_image=faces_color.copy()
mark_image_gray=faces_gray.copy()
eyes=eye_detector.detectMultiScale(image=faces_gray,scaleFactor=1.15,minNeighbors=2,minSize=(50,50),maxSize=(60,60))
for x,y,w,h in eyes:cv2.rectangle(mark_image,(x,y),(x+w,y+h),(0,255,0),3)cv2.rectangle(mark_image_gray,(x,y),(x+w,y+h),0,3) cv2.putText(img=mark_image,text='eyes',org=(x+w//6,y+h//2),fontFace=1,fontScale=1.8,color=(255,255,165))cv2.putText(img=mark_image_gray,text='eyes',org=(x+w//6,y+h//2),fontFace=1,fontScale=1.8,color=0)
smiles=smile_detector.detectMultiScale(image=faces_gray,scaleFactor=2,minNeighbors=7,minSize=(80,150),maxSize=(120,200))
for x,y,w,h in smiles:cv2.rectangle(mark_image,(x,y),(x+w,y+h),(255,0,0),3)cv2.rectangle(mark_image_gray,(x,y),(x+w,y+h),0,3)cv2.putText(img=mark_image,text='Smile',org=(x+w//3,y+h//2),fontFace=1,fontScale=1.8,color=(255,255,135))cv2.putText(img=mark_image_gray,text='Smile',org=(x+w//3,y+h//2),fontFace=1,fontScale=1.8,color=0)
plt.subplot(1,2,1),plt.imshow(mark_image),plt.text(x=200,y=50,s='微笑ing',color='black',size=15)
plt.subplot(1,2,2),plt.imshow(mark_image_gray,cmap='gray'),plt.text(x=100,y=50,s='微笑ing',color='black',size=10)

 总结

        以上便是 计算机视觉cv入门之Haarcascade的基本使用方法(人脸识别为例)的所有内容,如果你感到对你有用,可以一键三连支持一下博主!

http://www.dtcms.com/wzjs/504041.html

相关文章:

  • 外贸网站建设介绍开发app需要多少资金
  • wordpress po修改官网优化 报价
  • marketing 网站设计东莞免费建站公司
  • 贵州疫情最新消息能旅游吗西安seo顾问公司
  • 射洪哪里可以做网站nba最新交易新闻
  • 书店网站建设百度入驻商家
  • 借贷网站建设方案海豹直播nba
  • 怎么用记事本做钓鱼网站推广网络推广
  • 金湖县政府网站软环境效能建设如何在手机上开自己的网站
  • 福田网站 建设seo信科栾城seo整站排名
  • 找人做网站!!! 网站定制开发排名优化公司哪家好
  • 云南昆明疫情最新消息今天又封了网络营销企业网站优化
  • 武安信息港seo属于什么职业部门
  • 做一家购物网站要多少钱凡科网站建设
  • 哪个网站做布料好长沙网站排名推广
  • 做h网站最新网络营销方式
  • 收废铁的做网站有优点吗企业网站建设费用
  • 如何维护网站的运营互联网销售怎么做
  • 网站seo优化推广怎么做网站设计公司报价
  • 使用bootstrap做网站广州百度推广客服电话
  • 流量打不开网站怎么办郑州百度分公司
  • 郑州做网站 熊掌号网站免费优化
  • 装饰公司网站开发竞价推广怎样管理
  • ueditor 文件大小超出网站限制男生和女生在一起探讨人生软件
  • 博物馆网站做的最好的百度竞价优缺点
  • 南山区网站建设公司营销培训课程2022
  • 移动网站建设哪家便宜大学生网络营销策划方案书
  • 河南洛阳网站建设seo网站推广方案
  • 网络规划设计师2022论文5月360seo
  • 公司网站建设前期情况说明千牛怎么做免费推广引流