catPath = “D:\py\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml”
faceCascade = cv2.CascadeClassifier(catPath)
#注意win10这里是用的双斜杠,否则.xml会引起错误
img = cv2.imread(“yuanbao.jpg”)
#读取图像,一般括号里有两个参数,第一个是指定路径图片
#第二个是指定图像读取的模式1为彩色图像,0为灰阶图像
#-1是指带a(啊而fa)通道的途径(意思是多了一个透明度调整的图片)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#这一步的目的是要灰度化
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.02,
minNeighbors=3,
minSize=(150, 150),
flags=cv2.CASCADE_SCALE_IMAGE
)
#三个参数解释第一个检测人/猫脸图像,第二个参数指定每次图像缩小的比例
#第三个参数每次图像至少被检测多少次
#每次缩小(因为练的大小每次不同嘛)的比例为什么是1.5
#实现不同的图片调节参数也不同
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
#画一个矩形在image上,两个坐标,左上(x, y),右下角(x+w, y+h)
#边框为绿色(0, 255, 0),宽度为3
cv2.putText(img,‘Cat’,(x,y-7), 3, 1.2, (0, 255, 0), 2, cv2.LINE_AA)
cv2.imshow(‘Cat?’, img)
cv2.imwrite(“yuanbao.jpg” , img)
#imwrite是指输出,里面的两个参数第一个是为结果新建的输出文件名(不一定和第一个同)
#第二个参数image是指图片
c = cv2.waitKey(0)
#这里的0是指持续等待 只有按键才会有反应
#若这里是2000 注意这里的单位是毫秒 就是2s后无键盘输入就自动生成了
#我的问题不会调参数,如下:
有的就很准确,有的就非常不准,我不知到为什么,希望有人看到能解答一下,初学者,请见谅。
代码来源:https://www.jianshu.com/p/107b6134b211