又发现一条喵星人将要统治地球的新线索(OpenCV猫脸检测)

news/2024/7/21 6:41:57 标签: python, 计算机视觉, 数字图像, opencv, 图像处理

都说喵星人快要统治地球了,各种证据正在被发现……

图片

OpenCV的开发人员似乎也发现了些什么,在其发布版本里悄悄留下了些线索:

图片

在OpenCV-Python安装包目录的data文件夹下,有2个“frontcal cat face”文件,对比其他几个人脸识别的文件,从名称上可以推测出也是级联分类器,用来识别猫脸的,这明显是要为以后喵星人统治地球提前做技术储备呀。

为了以后更好地服务喵星人,我们来看看这些猫脸级联分类器怎么用。

第一步是在创建分类器对象的时候加载分类器文件,需要指明分类器文件的路径:

cascade_file = r"D:\Python\Python38\Lib\site-packages\cv2\data\haarcascade_frontalcatface.xml"
face_cascade = cv2.CascadeClassifier(cascade_file)

但是这种方法用起来不方便,不同的环境安装路径不一样,移植性差。我们可以打开data文件夹下的__init__.py看看:

import os

haarcascades = os.path.join(os.path.dirname(__file__), "")

可以看到haarcascades表示的就是data文件夹的路径,我们可以在自己的py文件中直接导入这个变量,生成级联分类器的路径:

import cv2
from cv2.data import haarcascades
cascade_file = haarcascades+"haarcascade_frontalcatface.xml"
print('cascade_file:',cascade_file)

运行结果:

cascade_file: D:\Python\Python38\lib\site-packages\cv2\data\haarcascade_frontalcatface.xml

接下来就是创建级联分类器实例:

face_cascade = cv2.CascadeClassifier(cascade_file)

然后就是读入图像,用detectMultiScale()方法检测猫,其中参数scaleFactor表示前后2次搜索时窗口的缩放比例,minSize表示搜索到猫脸的最小限制值:

img = cv2.imread("wifi-cat.jpg")  
faces = face_cascade.detectMultiScale(img,scaleFactor= 1.1,minSize=(130, 130))

返回的faces是一个表示猫脸的矩形框列表,每个矩形框包括起始点x和y的坐标,以及w和h表示的宽度和高度,接下来就是框出找到的猫脸:

for ind,position in enumerate(faces):
    print('position:',position)
    (x, y, w, h) = position
    cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
    cv2.putText(img,'Cat%d'%ind,(x,y-7), 3, 1.2, (0, 255, 0), 2, cv2.LINE_AA)
cv2.imshow('Cat', img)
cv2.waitKey(0)

图片

效果还不错,躲在天线上都能被你们发现。

再换几张包含喵星人和汪星人的图片试试:

图片

图片

这个非常满意,没有把我们喵星人当成粗鲁的汪星人。

汪星人在我喵星人面前不堪一击

图片


推荐阅读:

用这个方法解决Python多版本共存问题,简单粗暴!

tesseract训练字体居然还有这种骚操作

论如何把自己变成卡通人物

有了这款神器,什么吃灰文件都统统现形

一行代码深度定制你的专属二维码(amzqr)

桔子菌和超市老板田大爷的一次角色互换经历


http://www.niftyadmin.cn/n/787851.html

相关文章

PHP—— 作业外包 学生管理系统

QQ 1274510382 Wechat JNZ_aming 商业互捧 QQ群538250800 技术搞事 QQ群599020441 技术合作 QQ群152889761 加入我们 QQ群649347320 纪年科技aming 网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。 地址: https://pan-yz.chaoxing.com/views/external/thum…

DFS寻找路径~

给定起点 找到从起点到各点的路径。 注意:此法只适用于简单路径(无环) 1 2 1 3 2 4 3 4 这一组就含有环 不可以,因为 记录4号顶点父节点的时候 path[]只能记录最后访问到4的那个父节点 package Graph;import java.util.Iterato…

谈谈如何优雅的关闭正在运行中的Spark Streaming的流程序

前面的文章,已经简单提到过怎么样关闭流程序。因为Spark Streaming流程序比较特殊,所以不能直接执行kill -9 这种暴力方式停掉,如果使用这种方式停程序,那么就有可能丢失数据或者重复消费数据。 为什么呢?因为流程序一…

python线条颜色不同_Python中matplotlib的颜色及线条等设置

1.颜色 plt.scatter(x,y,c‘r’,marker‘x’,label‘cluster_1’) b: blue g: green r: red c: cyan m: magenta y: yellow k: black w: white 2.线条 plt.scatter(x,y,c‘r’,marker‘x’,label‘cluster_1’) plt.plot(range(10), linestyle’–’, marker‘o’, color‘b’)…

Python的多版本、多虚拟环境共存(jupyter篇)

原文链接:http://www.juzicode.com/python-note-multi-version-python-jupyter 1、安装多个Python版本或创建虚拟环境: 2、在对应的Python版本或虚拟环境的安装路径下使用pip install jupyter安装jupyter。 3、任何版本下启动jupyter lab,找…

java 二叉树_Java数据结构之-轻松搞定Java数据结构-树篇

课程简介:课程目的:通过本课程学习,让你轻松愉快地掌握Java数据结构之队列结构,提升自己的技术功底。适用人群:具有一定Java开发基础的开发人员。课程概述:数据结构是指相互之间存在一种或多种特定关系的数…

Flutter移动应用开发实战——展示动态

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技aming 网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。

OpenCV非真实感绘制(铅笔画、卡通画、边沿保持、细节增强)

原文链接:http://www.juzicode.com/opencv-note-non-photorealistic-rendering OpenCV中提供了几个非真实感绘制的接口函数,我们可以借助这些函数得到卡通画、素描画、美颜以及细节增强的图像。 detailEnhance()用来增强图像的细节: cv2.de…