首先导入需要的cv2库,如果没有的可以在Terminal中使用pip install opencv-python导入opencv的主要库包。
import cv2
使用filepath赋值照片的路径并且使用cv2.imread()读取照片:
filepath = "./1.jpg"
img = cv2.imread(filepath) # 读取图片
照片的原始图片为:
使用opencv自带的函数cv2.cvtColor()将其转为灰度图:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换灰色
使用opencv自带的函数建立识别分类器和训练分类器,再定义画框的颜色:
# OpenCV猫脸识别分类器
classifier = cv2.CascadeClassifier("./haarcascade_frontalcatface.xml")
color = (0, 255, 0) # 定义绘制颜色
# 调用识别猫脸
faceRects = classifier.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(5, 5))
注意:./haarcascade_frontalcatface.xml是Python(anaconda)中本身自带的,如果需要可以在python(anaconda)目录下之间复制到和.py文件同一级目录下,或者使用绝对路径,如果没有找到有可能是版本太低。
判断是否有猫脸,如果是则单独框出每一张猫脸
if len(faceRects): # 大于0则检测到猫脸
for faceRect in faceRects: # 单独框出每一张猫脸
x, y, w, h = faceRect
# 框出猫脸
cv2.rectangle(img, (x, y), (x + h, y + w), color, 2)
使用cv2.imshow()来展示图片,最后关闭所有的Windows。
cv2.imshow("image", img) # 显示图像
c = cv2.waitKey(10)
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果如下所示:
全部代码如下:
import cv2
filepath = "./1.jpg"
img = cv2.imread(filepath) # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换灰色
# OpenCV猫脸识别分类器
classifier = cv2.CascadeClassifier("./haarcascade_frontalcatface.xml")
color = (0, 255, 0) # 定义绘制颜色
# 调用识别猫脸
faceRects = classifier.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(5, 5))
if len(faceRects): # 大于0则检测到猫脸
for faceRect in faceRects: # 单独框出每一张猫脸
x, y, w, h = faceRect
# 框出猫脸
cv2.rectangle(img, (x, y), (x + h, y + w), color, 2)
cv2.imshow("image", img) # 显示图像
c = cv2.waitKey(10)
cv2.waitKey(0)
cv2.destroyAllWindows()
如果账号可直接点复制下面内容:
import cv2
filepath = "./1.jpg"
img = cv2.imread(filepath) # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换灰色
# OpenCV猫脸识别分类器
classifier = cv2.CascadeClassifier("./haarcascade_frontalcatface.xml")
color = (0, 255, 0) # 定义绘制颜色
# 调用识别猫脸
faceRects = classifier.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(5, 5))
if len(faceRects): # 大于0则检测到猫脸
for faceRect in faceRects: # 单独框出每一张猫脸
x, y, w, h = faceRect
# 框出猫脸
cv2.rectangle(img, (x, y), (x + h, y + w), color, 2)
cv2.imshow("image", img) # 显示图像
c = cv2.waitKey(10)
cv2.waitKey(0)
cv2.destroyAllWindows()