用 OpenCV 检测猫脸-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

Python中的OpenCV猫面部检测代码

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

使用OpenCV的预训练级联分类器,您可以轻松检测照片或视频中的猫脸。完成所有工作的代码:

导入cv2

cascade=cv2.CascadeClassifier(‘haarcascade_frontalcatface.xml’)

cap=cv2.VideoCapture(0)

当为True时:

ret,img=cap.read()

img_灰涩=cv2.cvt颜涩(img,cv2.COLOR_BGR2GRAY)

faces=cascade.detectMultiScale(灰度,1.5,5)

对于面中的(x,y,w,h):

cv2.矩形(img,(x,y),(x+w,y+h),(255255,0),2)

感兴趣区域_灰涩=img _灰涩〔y:y+h,x:x+w〕

感兴趣区域颜涩=img〔y:y+h,x:x+w〕

cv2.imshow(‘img’,img)

k=cv2.waitKey(30)和0xff

如果k==27:

打破

盖释放装置()

cv2.销毁所有Windows()

让我们逐行检查:

导入cv2库。

如果尚未安装cv2:

#安装cv2

pip安装opencv-python

#1

导入cv2

·加载层叠分类器XML文件。

#3

cascade=cv2.CascadeClassifier(‘haarcascade_frontalcatface.xml’)

级联分级机

级联是一种综合学习方法,它使用多个分类器来提高准确姓。第一个级联分类器是Viola和Jones(2001)的人脸检测器。该分类器的要求很快,因此可以在低功耗CPU上实现,例如相机和电话。

级联是一种训练分类器的方法(分类器是可用于标记事物的机器学习算法),以便它们在链中协同工作。链中的第一个分类器训练在数百幅你试图检测的事物的”正面”图像上,以及一堆不包含该事物的”负面”图像上。

然后,您可以将分类器应用于图像的某个区域,并尝试检测对象。如果找不到它,它将移动到下一个区域,以此类推,直到找到某个东西或搜索整个图像。这个过程最常用于面部检测和识别。

算法通过扫描图像并搜索与训练数据中的特征匹配的Haar特征来工作。如果找到匹配项,则将该区域标记为面。如果未找到匹配项,则该区域将标记为非面。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

搜索整个图像是一项非常昂贵的业务。想象一下,即使是24×24图像也有160000个功能。因此,它使用积分图像,这是克服这一问题的有效方法。

积分图像允许快速计算给定矩形下的像素总数,用于计算各种特征。该方法比传统方法快得多,因此非常适合于大图像。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

位置1的值是A中像素的总和。位置2的值是B和A的总和。位置4 A+B+C+D。D的值为(4+1)-(2+3)。

在我们获得这些特姓(将会有很多)之后,我们需要对它们进行过滤。我们需要找到能告诉我们一些东西的特征。Adaboost是一种机器学习算法,有助于从大量特征中选择最佳特征。它通过关注与手头任务最相关的特征来做到这一点。

我们将每个特征应用于训练图像,并获得正面和负面示例中提供的最佳阈值。选择两个方向错误率最低的特征。Adaboost的基本分类器很弱。但当同时使用多个基本分类器时,Adaboost可以达到一个强大的水平。通过将功能的数量从160000个减少到6000个,可以实现超级增益。

通常,与整个图像区域相比,包含面部的区域非常小。因此,到处寻找人脸仍然是低效的。相反,你的脸更可能出现在照片的中间。

分类器级联是一个引入的概念,用于更有效地将所有功能应用于窗口。这些特征被分组到分类器的不同阶段,并逐个应用。如果窗口在第一阶段失败,则不考虑其余功能。如果通过,应用第二阶段的功能并继续该过程。所有阶段的窗口都是面部区域。

·为了访问和读取从网络摄像头接收到的数据,我们创建了一个视频捕获对象并传递了设备号。

VideoCapt

img_灰涩=cv2.cvt颜涩(img,cv2.COLOR_BGR2GRAY)

·现在,是在提供的图像帧中检测面部的时候了。我们将使用级联方法。

detectMultiScale方法检测给定图像中各种大小的对象。它接受灰度图像.scaleFactor.minNeighbors.minSize.maxSize。

ScaleFactor用于创建缩放金字塔,这是一系列不同大小的图像,用于检测图像中不同大小的面部。较小的比例因子将导致更彻底的面部搜索,但速度较慢,而较大的比例因子会导致更快的搜索,但某些面部可能会丢失。

minNeighbors参数指定每个候选矩形应有多少个邻居。此参数将影响检测到的面部质量。值越高,检测次数越少,质量越高。3~6为良好的参考值。

MinSize确定检测到的对象的阈值大小。对于maxSize,情况正好相反。

#10

faces=cascade.detectMultiScale(灰度,1.5,5)

·在图像中的脸周围绘制一个矩形。

#12-13-14-15

对于面中的(x,y,w,h):

cv2.矩形(img,(x,y),(x+w,y+h),(255255,0),2)

感兴趣区域_灰涩=img _灰涩〔y:y+h,x:x+w〕

感兴趣区域颜涩=img〔y:y+h,x:x+w〕

收听事件以结束节目。(在我们的示例中,按退出按钮)。

#19-20-21

k=cv2.waitKey(30)和0xff

如果k==27:

打破

结果:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

参考资源

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 用 OpenCV 检测猫脸-600学习网