Загрузка данных


import os
import cv2 as cv


# --------------------------------------------------
# Настройки
# --------------------------------------------------

CAMERA_INDEX = 1

FRAME_WIDTH = 1280
FRAME_HEIGHT = 720

SAVE_FOLDER = "calibration_images"

os.makedirs(SAVE_FOLDER, exist_ok=True)


# --------------------------------------------------
# Открытие камеры
# --------------------------------------------------

camera = cv.VideoCapture(CAMERA_INDEX)

if not camera.isOpened():
    print("Не удалось открыть камеру")
    raise SystemExit


camera.set(cv.CAP_PROP_FRAME_WIDTH, FRAME_WIDTH)
camera.set(cv.CAP_PROP_FRAME_HEIGHT, FRAME_HEIGHT)


width = int(camera.get(cv.CAP_PROP_FRAME_WIDTH))
height = int(camera.get(cv.CAP_PROP_FRAME_HEIGHT))
fps = camera.get(cv.CAP_PROP_FPS)


print("Камера открыта")
print("Индекс камеры:", CAMERA_INDEX)
print("Разрешение:", width, "x", height)
print("FPS:", fps)

print()
print("ПРОБЕЛ — сделать фотографию")
print("Q или ESC — закончить работу")


# --------------------------------------------------
# Получение и сохранение кадров
# --------------------------------------------------

photo_number = 1

while True:

    success, frame = camera.read()

    if not success:
        print("Не удалось получить кадр")
        break


    cv.imshow("Camera", frame)

    key = cv.waitKey(1) & 0xFF


    if key == ord(" "):

        filename = f"{SAVE_FOLDER}/calib_{photo_number}.jpg"

        cv.imwrite(filename, frame)

        print(
            f"Фотография {photo_number} сохранена: {filename}"
        )

        photo_number += 1


    elif key == ord("q") or key == 27:
        break


# --------------------------------------------------
# Завершение работы
# --------------------------------------------------

camera.release()
cv.destroyAllWindows()

print("Камера закрыта")
print("Всего сделано фотографий:", photo_number - 1)