Endersqui
Femtopat
- Katılım
- 19 Eylül 2023
- Mesajlar
- 71
Daha fazla
- Cinsiyet
- Erkek
Python:
import cv2
# Yüz algılama ve çizgileri çizecek fonksiyon
def highlightFace(net, frame, conf_threshold=0.7):
frameOpencvDnn = frame.copy()
frameHeight = frameOpencvDnn.shape[0]
frameWidth = frameOpencvDnn.shape[1]
blob = cv2.dnn.blobFromImage(frameOpencvDnn, 1.0, (300, 300), [104, 117, 123], True, False)
net.setInput(blob)
detections = net.forward()
faceBoxes = []
for i in range(detections.shape[2]):
confidence = detections[0,0,i,2]
if confidence > conf_threshold:
x1 = int(detections[0,0,i,3] * frameWidth)
y1 = int(detections[0,0,i,4] * frameHeight)
x2 = int(detections[0,0,i,5] * frameWidth)
y2 = int(detections[0,0,i,6] * frameHeight)
faceBoxes.append([x1, y1, x2, y2])
cv2.rectangle(frameOpencvDnn, (x1, y1), (x2, y2), (0, 255, 0), int(round(frameHeight/150)), 8)
return frameOpencvDnn, faceBoxes
# Hazır modellerin eklenmesi
faceProto = "opencv_face_detector.pbtxt"
faceModel = "opencv_face_detector_uint8.pb"
ageProto = "age_deploy.prototxt"
ageModel = "age_net.caffemodel"
genderProto = "gender_deploy.prototxt"
genderModel = "gender_net.caffemodel"
MODEL_MEAN_VALUES = (78.4263377603, 87.7689143744, 114.895847746)
ageList = ['(0-2)', '(4-6)', '(8-12)', '(15-20)', '(25-32)', '(38-43)', '(48-53)', '(60-100)']
genderList = ['Erkek', 'Kadin']
faceNet = cv2.dnn.readNet(faceModel, faceProto)
ageNet = cv2.dnn.readNet(ageModel, ageProto)
genderNet = cv2.dnn.readNet(genderModel, genderProto)
database = {"Elon Musk": "elon.jpg"}
# Kamera açma
video = cv2.VideoCapture(0)
padding = 20
while cv2.waitKey(1) < 0:
hasFrame, frame = video.read()
if not hasFrame:
cv2.waitKey()
break
# Yüz algılama ve çizim
resultImg, faceBoxes = highlightFace(faceNet, frame)
if not faceBoxes:
print("Yüz algılanamadı")
for faceBox in faceBoxes:
# Yüz bölgesini al
face = frame[max(0, faceBox[1]-padding):min(faceBox[3]+padding, frame.shape[0]-1), max(0, faceBox[0]-padding):min(faceBox[2]+padding, frame.shape[1]-1)]
# Yüz bölgesini bloba dönüştür
blob = cv2.dnn.blobFromImage(face, 1.0, (227, 227), MODEL_MEAN_VALUES, swapRB=False)
# Cinsiyet tahmini yap
genderNet.setInput(blob)
genderPreds = genderNet.forward()
gender = genderList[genderPreds[0].argmax()]
print(f'Cinsiyet: {gender}')
# Yaş tahmini yap
ageNet.setInput(blob)
agePreds = ageNet.forward()
age = ageList[agePreds[0].argmax()]
print(f'Yaş: {age[1:-1]} yaşında')
# Kişinin adını ve diğer bilgileri ekrana yazdır
for name, photo_path in database.items():
if name.lower() in name.lower():
cv2.putText(resultImg, name, (faceBox[0], faceBox[1] - 80), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 255), 2, cv2.LINE_AA)
cv2.putText(resultImg, gender, (faceBox[0], faceBox[1] - 50), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 255), 2, cv2.LINE_AA)
cv2.putText(resultImg, age, (faceBox[0], faceBox[1] -20), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 255), 2, cv2.LINE_AA)
# Sonuçları göster
cv2.imshow("Yas ve Cinsiyet Algilama", resultImg)
# Video yakalama nesnesini serbest bırak
video.release()
cv2.destroyAllWindows()
ChatGPT ve kendi kodlarımı birleştirerek şöyle bir yüz tanıma programı yaptım ama kameradaki yüzü databasedeki yüz ile karşılaştırıp sonuç vermesi gerekirken önüne gelen herkese Elon Musk diyor bunun çözümü nedir?