Python cv2框示人脸 【基本】

运用模组cv2 Pillow HAAR特徵档
在一张图片上(虚拟网红脸),标记框示人脸,并每人存成一张图档。
http://img2.58codes.com/2024/20111373fmyC8iTu76.jpg
直接看代码解说

# detect face --> tag --> crop --> saveimport cv2 from PIL import Image# 脸部特徵档 安装cv2后,在\Anaconda3\Lib\site-pakages\cv2\data\ 内# 複製存放到现在资料夹内 casc_path = 'haarcascade_frontalface_default.xml'# 辨识器faceCascade = cv2.CascadeClassifier(casc_path)# 读取一张,由GAN产生的'虚拟网红脸' filename = 'fakeFaces.jpg'       imagename = cv2.imread(filename)'''侦测人脸  ( 可试试不同设定,会产生什么变化 )   scaleFactor 侦测窗口之大小倍数,minNeighbors 误判参数   minSize 窗口之最小尺寸   本例之图片内,脸部尺寸都大于400,如果maxSize太小,就侦测不出了   或许不设定 maxSize ? ''' minWnd = (30,30)maxWnd =(400,400)sFactor = 1.1faces = faceCascade.detectMultiScale(imagename, scaleFactor=sFactor, minNeighbors=5,            minSize=minWnd, maxSize = maxWnd)# 找到几张脸 len(faces)cv2.putText(imagename,f'{len(faces)} faces found',          (20,60), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)#--- 截取每张脸,存档pImage = Image.open(filename)i = 1for (x,y,w,h) in faces:        #--- 标记 crop 位置    cv2.rectangle(imagename,(x,y),(x+w, y+h),(0,0,255),2)        #--- 每张脸存一张图    fileNa = 'crop%s.jpg' % (i)    img1 = pImage.crop((x, y, x+w, y+h))    img2 = img1.resize((300, 300), Image.ANTIALIAS)    img2.save(fileNa)        #--- 在原图上 标注号码    cv2.putText(imagename,f'No {i}',(x+5,y+h+15),cv2.FONT_HERSHEY_SIMPLEX,                   0.5, (255,255,255), 2)    i += 1    # 显示成果    cv2.namedWindow("Face detect")cv2.imshow("Face detect", imagename)cv2.waitKey(0)  cv2.destroyAllWindows()

http://img2.58codes.com/2024/20111373NXIIIVq0Dg.jpg
资料夹内存档的图片
http://img2.58codes.com/2024/20111373j4dsgCjUmw.jpg


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章