Python 将新人脸登记到人脸识别数据集中(opencv,人脸识别)
我有一个人脸识别代码(最后给出了完整的代码),可以很好地处理现有的数据集 但我希望它在请求用户输入帧中新人物的姓名后,也能在数据集中添加新面孔(注册)[如:Python 将新人脸登记到人脸识别数据集中(opencv,人脸识别),python,Python,我有一个人脸识别代码(最后给出了完整的代码),可以很好地处理现有的数据集 但我希望它在请求用户输入帧中新人物的姓名后,也能在数据集中添加新面孔(注册)[如:new\u name=print(这是谁?]。这样,我就可以根据输入的名称创建一个新文件夹,并将面存储在框架内。这就是我所做的: new_name = input("Who is this?") path_2 = os.path.join('Images',new_name) os.mkdir(pa
new\u name=print(这是谁?
]。这样,我就可以根据输入的名称创建一个新文件夹,并将面存储在框架内。这就是我所做的:
new_name = input("Who is this?")
path_2 = os.path.join('Images',new_name)
os.mkdir(path_2)
print("Directory '% s' created" % new_name)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0,0,255),
thickness = 2)
cv2.putText(frame, new_name, (x, y), cv2.FONT_HERSHEY_SIMPLEX,
0.75, (0, 255, 0), 2)
sub_face = frame[y:y+h, x:x+w]
FaceFileName = new_name + str(y+x) + ".jpg"
cv2.imwrite(os.path.join(path_2,FaceFileName),sub_face)
cv2.imshow("Frame",frame)
#if cv2.waitKey(1) & 0xFF == ord('q'):
# break
这对新人很管用。但是现在我不得不为那些不认识的人做点什么。
在这种情况下,我们已经有了一个输入名称的文件夹。我们必须按输入的名称将图像附加到现有文件夹中。
为此,我尝试了以下代码:(不起作用)
我得到一个错误:
Who is this?Vishwesh
Traceback (most recent call last):
File "C:\Users\Vishw\databs.py", line 117, in <module>
os.mkdir(path_2)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'Images\\Vishwesh'
[ WARN:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sgoydvi3\opencv\modules\videoio\src\cap_msmf.cpp (438) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback
因此,您的问题与文件操作有关,而与人脸识别有关。。。 在尝试创建文件夹alreday之前,请尝试检查该文件夹是否存在:
path_2 = os.path.join('Images',new_name)
if not os.path.exists(path_2):
os.mkdir(path_2)
因此,您的问题与文件操作有关,而与人脸识别有关。。。 在尝试创建文件夹alreday之前,请尝试检查该文件夹是否存在:
path_2 = os.path.join('Images',new_name)
if not os.path.exists(path_2):
os.mkdir(path_2)
使用@Bohdan给出的想法:
else: # To store the unknown new face with name
new_name = input("Who is this?")
path_2 = os.path.join('Images',new_name)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0,0,255),
thickness = 2)
cv2.putText(frame, new_name, (x, y), cv2.FONT_HERSHEY_SIMPLEX,
0.75, (0, 255, 0), 2)
sub_face = frame[y:y+h, x:x+w]
FaceFileName = new_name + str(y+x) + ".jpg"
if not os.path.exists(path_2):
os.mkdir(path_2)
print("Directory '% s' created" % new_name)
cv2.imwrite(os.path.join(path_2,FaceFileName),sub_face)
# To store unrecognised faces of known people
else:
cv2.imwrite(os.path.join(path_2,FaceFileName),sub_face)
代码工作得非常好 使用@Bohdan给出的想法:
else: # To store the unknown new face with name
new_name = input("Who is this?")
path_2 = os.path.join('Images',new_name)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0,0,255),
thickness = 2)
cv2.putText(frame, new_name, (x, y), cv2.FONT_HERSHEY_SIMPLEX,
0.75, (0, 255, 0), 2)
sub_face = frame[y:y+h, x:x+w]
FaceFileName = new_name + str(y+x) + ".jpg"
if not os.path.exists(path_2):
os.mkdir(path_2)
print("Directory '% s' created" % new_name)
cv2.imwrite(os.path.join(path_2,FaceFileName),sub_face)
# To store unrecognised faces of known people
else:
cv2.imwrite(os.path.join(path_2,FaceFileName),sub_face)
代码工作得非常好 非常感谢@Bohdan!我的代码现在满足了期望!非常感谢@Bohdan!我的代码现在满足了期望!