首先,如果标题很长,我很抱歉。我正在使用python进行人脸检测。我正在尝试编写一个脚本,在两个目录/文件夹之间检测到相同的图片或几乎相同的图片/面部时,它将通知用户。 以下是我到目前为止编写的脚本。如何通知用户,如果在python和opencv两个目录之间检测到共同的面孔
import cv2
import glob, requests
def detect1():
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
for img in glob.glob('/Users/Ling/Pythonfiles/Faces/*.jpg'):
cv_img = cv2.imread(img)
gray = cv2.cvtColor(cv_img, cv2.COLOR_BGR2GRAY)
faces1 = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces1:
cv2.rectangle(cv_img,(x,y),(x+w,y+h),(255,0,0),2)
def detect2():
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
for image in glob.glob('/Users/Ling/Pythonfiles/testfolder/*.jpg'):
cv_image = cv2.imread(image)
gray = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY)
faces2 = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces2:
cv2.rectangle(cv_image,(x,y),(x+w,y+h),(255,0,0),2)
def notify():
if detect2 == detect1:
key = "<yourkey>"
sandbox = "<yoursandbox>.mailgun.org"
recipient = "<recipient's email>"
request_url = 'https://api.mailgun.net/v2/{0}/messages'.format(sandbox)
request = requests.post(request_url, auth=('api', key),
data={
'from': '<sender's email',
'to': recipient,
'subject': 'face detect',
'text': 'common face detected'
})
print 'Status: {0}'.format(request.status_code)
print 'Body: {0}'.format(request.text)
没有错误,但没有通知。我有一个包含10张随机脸部图片的文件夹,我从Google图片下载(仅用于学习目的),另一个文件夹中有2张人脸图片,他们的脸部与前一个文件夹中的部分图片相同。具有相同面部的图片处于不同的角度。
我通过参考https://pythonprogramming.net/haar-cascade-face-eye-detection-python-opencv-tutorial/ 的教程编写了脚本,并添加了一些行来发送通知,如果程序从两个文件夹中检测到相同的面孔。
我的问题是我如何确切地通知用户,如果有检测到相同的面孔。我相信这段代码是不完整的,希望有人可以给我一些建议,指出要在这个脚本中添加/编辑什么或不该写什么。
预先感谢您。
谢谢你的回答。我会按你的建议尝试。我无法尽快测试它,因为我有另一个项目。如果我有时间,我一定会按照你的建议去尝试。 – Ling