gpt4 book ai didi

python - 人脸识别无法检测图像人脸是否不在人像上

转载 作者:行者123 更新时间:2023-12-05 07:31:46 28 4
gpt4 key购买 nike

我尝试通过此链接使用人脸识别:face recognition

然后像这样修改代码,main.py:

#!/usr/bin/env python
import cgitb, cgi
cgitb.enable()
print("Content-Type: text/html;charset=utf-8")

print "Content-type:text/html\r\n\r\n"
import base64
import simplejson as json
import re
import face_recognition
import numpy as np
import io
from imageio import imread
from PIL import Image
import datetime
import os, errno
import shutil

params = cgi.FieldStorage()
now = datetime.datetime.now()
date = str(now)
date2 = date.replace(" ","")
img = params.getvalue('img')
data1 = json.loads(img)
data2 = data1['img2']['data']

numparray = data1['img1']
numparray2 = numparray.replace(" ", "+")

b=bytes(numparray2)
imgdata = base64.b64decode(b)

os.makedirs(date2)
with open(date2+"/img1.png", "wb") as f:
f.write(imgdata)

image = face_recognition.load_image_file(date2+'/img1.png')

try:
face_encode = face_recognition.face_encodings(image)[0]
#print("face_encode = ".format(face_encode))
except IndexError:
print("encode image failed")
quit()

known_faces = []
y = 1
for images in data2:
ir = images.replace(" ", "+")
ib = bytes(ir)
imagedata = base64.b64decode(ib)
x = str(y)
with open(date2+"/compare"+x+".png", "wb") as g:
g.write(imagedata)
compare = face_recognition.load_image_file(date2+"/compare"+x+".png")
try:
compare_encode = face_recognition.face_encodings(compare)[0]
#print("face_encode = ".format(face_encode))
except IndexError:
print("encode image compare failed")
quit()
known_faces.append(compare_encode)
y = y+1

results = face_recognition.face_distance(known_faces, face_encode)

datahasil = []
#hasilakhir = "{"
for i, face_distance in enumerate(results):
h = "{:.2}".format(face_distance, i)
#hasilakhir = hasilakhir+"compare{}"
datahasil.append(h)

hasilakhir = ','.join(datahasil)

shutil.rmtree(date2, ignore_errors=True)

print("{\"hasilcompare\" : \"" +hasilakhir+ "\"}")

最后的结果是比较两张图片并给出分数,如果一张图片是肖像比较成功,但是当其中一张不在肖像上(面部不在肖像上)或者像面部角度超过 90度,在 catch encode failed 中给出错误信息..

在将 2 张图像发送到 main.py 以检测面部图像之前,我尝试了另一种面部检测方法,但是当它无法检测到面部时,我尝试旋转图像直到代码检测到面部,但有时面部检测可以检测角度为90度的人脸,但在人脸识别(main.py)中仍然无法读取人脸。

code of rotate is here, rotate.py:import numpy as np
import cv2
from scipy import ndimage, misc
import os
from PIL import Image


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

for counter in range (0, 4):
img = cv2.imread('img/1.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)

if(len(faces) == 1):
i = False
print ("face found")
break
else:
print("no face found")
i = False
img = Image.open("img/1.jpg")
img.rotate(90).save("img/1.jpg")

最佳答案

是的,我认为这是图书馆的问题。我在同一张图片上测试了它。一次在旋转后,一次在原始图像上。它不检测旋转后的图像,face_locationsface_encodings 都是空列表。

关于python - 人脸识别无法检测图像人脸是否不在人像上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51626213/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com