commit b2a8f100929a76a830cff191bef657c54b8c969c Author: Vlad Date: Wed Jan 31 20:52:28 2024 +0600 r.py сравнение лиц text2.py id-шка diff --git a/img/img.png b/img/img.png new file mode 100644 index 0000000..7b852f5 Binary files /dev/null and b/img/img.png differ diff --git a/r.py b/r.py new file mode 100644 index 0000000..89ee3ad --- /dev/null +++ b/r.py @@ -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 diff --git a/text2.py b/text2.py new file mode 100644 index 0000000..44da0b6 --- /dev/null +++ b/text2.py @@ -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)