admin管理员组文章数量:1293367
main.py
import numpy as np
import cv2
import dlib
import pickle
import os
# ✅ Open video capture
video = cv2.VideoCapture(0)
# ✅ Initialize Dlib's HOG-based face detector
detector = dlib.get_frontal_face_detector()
faces_data = []
i = 0
name = input("Enter Your Name Here: ")
# ✅ Set higher resolution
video.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
video.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
while True:
ret, frame = video.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = detector(gray)
for face in faces:
x, y, w, h = face.left(), face.top(), face.width(), face.height()
crop_img = frame[y:y + h, x:x + w, :]
resized_img = cv2.resize(crop_img, (50, 50))
if len(faces_data) < 100 and i % 10 == 0:
faces_data.append(resized_img)
i += 1
cv2.putText(frame, str(len(faces_data)), (50, 50), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (50, 50, 255), 1)
cv2.rectangle(frame, (x, y), (x + w, y + h), (50, 50, 255), 2)
cv2.imshow("Frame - Dlib HOG", frame)
k = cv2.waitKey(1)
if k == ord('q') or len(faces_data) == 100: # ✅ Stop when 100 images are captured
break
# ✅ Release video
video.release()
cv2.destroyAllWindows()
# ✅ Save Data in "Data" Folder
if not os.path.exists('Data'):
os.makedirs('Data')
names_file = 'Data/names.pkl'
faces_file = 'Data/faces_data.pkl'
# ✅ Save Names
if os.path.exists(names_file):
with open(names_file, 'rb') as f:
names = pickle.load(f)
names.extend([name] * len(faces_data))
else:
names = [name] * len(faces_data)
with open(names_file, 'wb') as f:
pickle.dump(names, f)
# ✅ Save Faces
faces_data = np.asarray(faces_data)
if os.path.exists(faces_file):
with open(faces_file, 'rb') as f:
existing_faces = pickle.load(f)
combined_faces = np.concatenate((existing_faces, faces_data), axis=0)
else:
combined_faces = faces_data
with open(faces_file, 'wb') as f:
pickle.dump(combined_faces, f)
print("✅ Data saved successfully in 'Data/' folder.")
test.py
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
import cv2
import dlib
import pickle
import os
names_file = 'Data/names.pkl'
faces_file = 'Data/faces_data.pkl'
# ✅ Open video capture
video = cv2.VideoCapture(0)
# ✅ Initialize Dlib's HOG-based face detector
detector = dlib.get_frontal_face_detector()
# Load data
with open(names_file, 'rb') as f:
LABELS = pickle.load(f)
with open(faces_file, 'rb') as f:
FACES = pickle.load(f)
print(f"Shape of FACES: {FACES.shape}")
print(f"Shape of LABELS: {len(LABELS)}")
# ✅ Set higher resolution
video.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
video.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
# Train KNN model
Knn = KNeighborsClassifier(n_neighbors=5)
Knn.fit(FACES, LABELS)
while True:
ret, frame = video.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = detector(gray)
for face in faces:
x, y, w, h = face.left(), face.top(), face.width(), face.height()
crop_img = frame[y:y + h, x:x + w]
resized_img = cv2.resize(crop_img, (50, 50)).flatten().reshape(1, -1)
output = Knn.predict(resized_img)
cv2.putText(frame, str(output[0]), (x, y - 15), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 255), 2)
cv2.rectangle(frame, (x, y), (x + w, y + h), (50, 50, 255), 2)
cv2.imshow("Frame - Dlib HOG", frame)
k = cv2.waitKey(1)
if k == ord('q'):
break
# ✅ Release video
video.release()
cv2.destroyAllWindows()
The problem is that when I run it takes input Enter Here Name: and then it opens the camera and read the face of person and save it on the pkl file (faces_data.pkl and names.pkl) as given.
The test.py file is created for testing but it Sometimes shows the error when i run individually the test.py "RuntimeError: Unsupported image type, must be 8bit gray or RGB image."
And I already converted it into gray gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
Complete Error:
Shape of FACES: (100, 7500)
Shape of LABELS: 102
Traceback (most recent call last):
File "E:\UMT\Semester 5\DL & NN\Project\Youtube_Face_reconition system\test.py", line 32, in <module>
Knn.fit(FACES, LABELS)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python311\Lib\site-packages\sklearn\base.py", line 1389, in wrapper
return fit_method(estimator, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\DELL\AppData\Local\Programs\Python\Python311\Lib\site-packages\sklearn\neighbors\_classification.py", line 239, in fit
return self._fit(X, y)
^^^^^^^^^^^^^^^
File "C:\Users\DELL\AppData\Local\Programs\Python\Python311\Lib\site-packages\sklearn\neighbors\_base.py", line 478, in _fit
X, y = validate_data(
^^^^^^^^^^^^^^
File "C:\Users\DELL\AppData\Local\Programs\Python\Python311\Lib\site-packages\sklearn\utils\validation.py", line 2961, in validate_data
X, y = check_X_y(X, y, **check_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\DELL\AppData\Local\Programs\Python\Python311\Lib\site-packages\sklearn\utils\validation.py", line 1389, in check_X_y
check_consistent_length(X, y)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python311\Lib\site-packages\sklearn\utils\validation.py", line 475, in check_consistent_length
raise ValueError(
ValueError: Found input variables with inconsistent numbers of samples: [100, 102]
Instead it should tell me the name of person.
本文标签: pythonIn Recognition System testpy is not workingStack Overflow
版权声明:本文标题:python - In Recognition System test.py is not working - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741575897a2386281.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论