基于Python-opencv的人脸识别检测

1.人脸识别检测已经做出来了,现在需要多加一个功能,就是在人脸定位了之后,要对人脸进行覆盖,就是用图片把人脸覆盖。这个功能我不会,求各位大神帮一下子。
我的代码如下:
import cv2

face_cascade = cv2.CascadeClassifier('E:\openCV\opencv\sources/data/haarcascades/haarcascade_frontalface_alt2.xml')
cap = cv2.VideoCapture(0)
while True:
ret,img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)

if cv2.waitKey(1) &0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()

4个回答

from PIL import Image
#这个直接pip安装就好 pip install pillow

img1_path = r'C:\Users\Jack\Desktop\Head\head4.jpg'
img1 = Image.open(img1_path)#打开图片1
img2_path = r'C:\Users\Jack\Desktop\Head\head1.jpg'
img2 = Image.open(img2_path)#打开图片二
img2 = img2.resize((80,80))#缩放图片二
box = (90,40,90+80,40+80)#定义box 左,上,右,下像素位置 要和图片二大小一致(所以上面缩放下)
img1.paste(img2,box)
img1.show()

#照上面逻辑处理就好了

可以使用PIL库
from PIL import Image

PIL文档:

img.paste(image, box)

Pastes another image into this image. The box argument is either a 2-tuple giving the upper left corner, a 4-tuple defining the left, upper, right, and lower pixel coordinate, or None (same as (0, 0)). If a 4-tuple is given, the size of the pasted image must match the size of the region.

J4cks0n
J4cks0n 回复eric949: from PIL import Image img1_path = r'C:\Users\Jack\Desktop\Head\head4.jpg' img1 = Image.open(img1_path)#打开图片1 img2_path = r'C:\Users\Jack\Desktop\Head\head1.jpg' img2 = Image.open(img2_path)#打开图片二 img2 = img2.resize((80,80))#缩放图片二 box = (90,40,90+80,40+80)#定义box 左,上,右,下像素位置 要和图片二大小一致(所以上面缩放下) img1.paste(img2,box) img1.show()
2 年多之前 回复
eric949
eric949 而且我的Python是3.6,anaconda3安装Python,这样还是安装PIL库吗?应该是安装pillow吗?
2 年多之前 回复
eric949
eric949 额,我是个小白,能不能给我指出在我的代码的那个位置加入,该怎么加?谢谢啊
2 年多之前 回复

faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.imshow('img',img)

我没装,没法调试,这个faces不是都已经提取了么? 你要的不是在每个面部加个矩形框么?for里的代码好像就是画面部矩形的。。。
可以断点看看,cv2.imshow('img',img) 这个好像调用不正确吧,具体看看方法说明,感觉你这都基本实现好了。

eric949
eric949 首先是把提取的人脸给去除,然后把图片尺寸给修改成矩形框的尺寸,接着把修改后的图片放入矩形框中,是这么个要求,需要代码实现,求解
2 年多之前 回复
eric949
eric949 是这样的,人脸识别功能已经出来了,我需要加上一个人脸马赛克功能,把人脸用其他图片代替。
2 年多之前 回复

cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)这一句改成img[x:x+w,y:y+h]=0 ,这个是把人脸置黑,类似修改就行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问