r.py сравнение лиц text2.py id-шка
This commit is contained in:
commit
b2a8f10092
BIN
img/img.png
Normal file
BIN
img/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 459 KiB |
54
r.py
Normal file
54
r.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import cv2
|
||||||
|
import face_recognition
|
||||||
|
|
||||||
|
# To capture video from webcam.
|
||||||
|
cap = cv2.VideoCapture(0)
|
||||||
|
# To use a video file as input
|
||||||
|
# cap = cv2.VideoCapture('filename.mp4')
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# Read the frame
|
||||||
|
_, img = cap.read()
|
||||||
|
|
||||||
|
# Находим координаты лиц с использованием face_recognition
|
||||||
|
faces_locations = face_recognition.face_locations(img)
|
||||||
|
|
||||||
|
# Draw the rectangle around each face
|
||||||
|
for (top, right, bottom, left) in faces_locations:
|
||||||
|
cv2.rectangle(img, (left, top), (right, bottom), (255, 0, 0), 2)
|
||||||
|
|
||||||
|
# Если обнаружено два лица, сравниваем их
|
||||||
|
if len(faces_locations) == 2:
|
||||||
|
# Преобразуем кортежи в списки
|
||||||
|
face_encodings = [face_recognition.face_encodings(img, [face_location])[0] for face_location in faces_locations]
|
||||||
|
|
||||||
|
# Сравниваем лица
|
||||||
|
results = face_recognition.compare_faces(face_encodings, face_encodings[1])
|
||||||
|
|
||||||
|
# Выводим результат
|
||||||
|
if all(results):
|
||||||
|
print("Yes, лица похожи!")
|
||||||
|
|
||||||
|
# Сохраняем изображения только если лица совпадают
|
||||||
|
for i, (top, right, bottom, left) in enumerate(faces_locations):
|
||||||
|
cv2.imwrite(f'images/face_{i + 1}.png', img[top:bottom, left:right])
|
||||||
|
|
||||||
|
# Прерываем цикл, чтобы не продолжать поиск
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
print("No, лица различны.")
|
||||||
|
|
||||||
|
# Display
|
||||||
|
cv2.imshow('img', img)
|
||||||
|
# Stop if escape key is pressed
|
||||||
|
k = cv2.waitKey(30) & 0xff
|
||||||
|
if k == 27:
|
||||||
|
break
|
||||||
|
|
||||||
|
# Release the VideoCapture object
|
||||||
|
cap.release()
|
||||||
|
# Close all OpenCV windows
|
||||||
|
cv2.destroyAllWindows()
|
||||||
|
|
||||||
|
|
||||||
|
# osr с опен cv
|
56
text2.py
Normal file
56
text2.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import cv2
|
||||||
|
import pytesseract
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
|
||||||
|
# Укажите путь к исполняемому файлу tesseract
|
||||||
|
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\ASUS\Desktop\fishrungame\treadBibliotek\tesseract.exe'
|
||||||
|
|
||||||
|
|
||||||
|
def draw_boxes(image, boxes, texts):
|
||||||
|
for i, box in enumerate(boxes):
|
||||||
|
x, y, x_w, y_h = box
|
||||||
|
cv2.rectangle(image, (x, y), (x + x_w, y + y_h), (0, 255, 0), 2)
|
||||||
|
cv2.putText(image, texts[i], (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
|
||||||
|
|
||||||
|
|
||||||
|
def process_image(image_path, coordinates_list):
|
||||||
|
image = cv2.imread(image_path)
|
||||||
|
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
||||||
|
|
||||||
|
# Применение OCR
|
||||||
|
custom_config = r'--oem 3 --psm 6 -l kir+eng+rus'
|
||||||
|
text = pytesseract.image_to_string(gray, config=custom_config)
|
||||||
|
|
||||||
|
# Получение координат и размеров квадратов
|
||||||
|
h, w, _ = image.shape
|
||||||
|
boxes = [(int(x), int(h - y_h), int(x_w - x), int(h - y)) for x, y, x_w, y_h in coordinates_list]
|
||||||
|
|
||||||
|
# Фильтрация квадратов по проценту (если нужно)
|
||||||
|
percentage_threshold = 1
|
||||||
|
filtered_boxes = [box for box in boxes if (box[2] * box[3]) / (w * h) * 100 >= percentage_threshold]
|
||||||
|
|
||||||
|
# Извлечение текста из области каждого квадрата
|
||||||
|
texts = []
|
||||||
|
for box in filtered_boxes:
|
||||||
|
x, y, x_w, y_h = box
|
||||||
|
crop_img = gray[y:y + y_h, x:x + x_w]
|
||||||
|
cropped_text = pytesseract.image_to_string(crop_img, config=custom_config)
|
||||||
|
texts.append(cropped_text)
|
||||||
|
print(f"Text inside the box at ({x}, {y}): {cropped_text}")
|
||||||
|
|
||||||
|
# Рисование квадратов и вывод текста
|
||||||
|
draw_boxes(image, filtered_boxes, texts)
|
||||||
|
|
||||||
|
# Отображение изображения с квадратами с использованием matplotlib
|
||||||
|
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
|
||||||
|
plt.title('Image with Boxes and Text')
|
||||||
|
plt.show()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
image_path = 'img/img.png'
|
||||||
|
|
||||||
|
# Задайте координаты для каждого квадрата в формате (x, y, x_w, y_h)
|
||||||
|
coordinates_list = [(248, 399, 480, 330), (248, 399, 480, 282), (248, 399, 480, 230), (282, 399, 480, 190), (248, 399, 600, 160), (248, 399, 430, 120), (452, 399, 600, 103), (450, 395, 600, 60)]
|
||||||
|
|
||||||
|
process_image(image_path, coordinates_list)
|
Loading…
Reference in New Issue
Block a user