问题描述
本模块采用opencv方法,调用opencv的人脸检测数据集。
version:
- opencv-contrib-python 4.6.0.66
- haarcascade_frontalcatface from github/opencv/data
功能:输入图片地址,运行代码后将输出圈出人脸的图片
但是输出的图片中并不含有红色框框,于是尝试打印检测数据及其类型,结果如下
<class 'tuple'>
()
解决过程
- 首先对代码进行了检查,没有发现问题
- 更改检测图片,成功
结果如下
错误分析
首先上传前后分别使用的图片
分析原因:考虑到人脸检测的方法,可能是由于第一张图片中人脸肤色与背景贴近,因此未能识别出人脸
实例代码
import cv2 as cv
import numpy as np
img = cv.imread('D:/2022FPGA\imgProcess\data\cook.jpg')
# print(face)
# print(type(face))
# cv.imshow('h', face)
# cv.ocl.setUseOpenCL(False)
faceDetector = cv.CascadeClassifier(
'D:/2022FPGA\imgProcess\DataSet\haarcascade_frontalface_alt.xml')
faces = faceDetector.detectMultiScale(img)
# print(type(faces)) # should be a 'numpy.ndarray'
for (x,y,w,h) in faces: # take note
pt1 = (x, y)
pt2 = (x + w, y + h)
color = (0, 0, 255) # BGR, so it should be red
thickness = 2
cv.rectangle(img, pt1, pt2, color, thickness)
cv.imshow('faceOfpeople', img)
# Press keyboard, then the window is shut down
cv.waitKey(0)
cv.destroyAllWindows()