передача скрипту пути и имени файла

Рейтинг: 0Ответов: 1Опубликовано: 01.02.2023

В pythone нужно чтобы в скрипте можно было указывать путь и имя файла (скриншота). Аргументами ПУТЬ И ИМЯ ФАЙЛА (в консоли)

import os
import pickle
import sys
import face_recognition
#from cv2 import cv2
import cv2



def take_creenshot_from_video():
    cap = cv2.VideoCapture(0) # если 0 то камера, если нужно видео то указать имя видео в кавычках.
    count = 0

    adress = input("введите адрес сохранения ")
    name = input("Введите имя файла с расширением ")


    if not os.path.exists(adress):
        os.mkdir(adress)


    while True:
        ret, frame = cap.read()
        fps = cap.get(cv2.CAP_PROP_FPS)
        multiplier = fps * 3
        #print(fps)

        if ret:
            frame_id = int(round(cap.get(1)))
            #print(frame_id)
            cv2.imshow("frame", frame)
            k = cv2.waitKey(20)

            #if frame_id % multiplier == 0: #тайминг в 3 секкунды (сам делает фото)
                #cv2.imwrite(f"dataset_from_video/{count}.jpg", frame)
                #print(f"Take a screenshot {count}")
                #count += 1

            if k == ord(" "): #по кнопке делается скрин
                cv2.imwrite(f"{adress}/{count}{name}", frame)
                print((f"Take an extra screenshot {count}"))
                count += 1
            elif k == ord("q"):#закрытие программы по кнопке
                print("Q pressed, closing the app")
                break


        else:
            print("[Error] Can't get the frame...")
            break

    cap.release()
    cv2.destroyAllWindows()

def main():
    #print(train_model_by_img("person_name"))
    take_creenshot_from_video()


if __name__ == '__main__':
    main()

Ответы

▲ 1
  1. Импортируем библиотку argparse
  2. Добавляем нужные нам аргументы
  3. Считываем их
import os
import argparse
import cv2

parser = argparse.ArgumentParser(description="Camera")
parser.add_argument('-address', '--ADDRESS_TYPE', default='/', type=str, help='Введите адрес сохранения')
parser.add_argument('-name', '--NAME_TYPE', default='default.jpg', type=str, help='Введите имя файла с расширением')

args = parser.parse_args()


def take_creenshot_from_video():
    cap = cv2.VideoCapture(0)  # если 0 то камера, если нужно видео то указать имя видео в кавычках.
    count = 0

    address = args.ADDRESS_TYPE
    name = args.NAME_TYPE

    if not os.path.exists(address):
        os.mkdir(address)

    while True:
        ret, frame = cap.read()
        fps = cap.get(cv2.CAP_PROP_FPS)
        multiplier = fps * 3
        # print(fps)

        if ret:
            frame_id = int(round(cap.get(1)))
            # print(frame_id)
            cv2.imshow("frame", frame)
            k = cv2.waitKey(20)

            # if frame_id % multiplier == 0: #тайминг в 3 секкунды (сам делает фото)
            # cv2.imwrite(f"dataset_from_video/{count}.jpg", frame)
            # print(f"Take a screenshot {count}")
            # count += 1

            if k == ord(" "):  # по кнопке делается скрин
                cv2.imwrite(f"{address}/{count}{name}", frame)
                print((f"Take an extra screenshot {count}"))
                count += 1
            elif k == ord("q"):  # закрытие программы по кнопке
                print("Q pressed, closing the app")
                break


        else:
            print("[Error] Can't get the frame...")
            break

    cap.release()
    cv2.destroyAllWindows()


def main():
    # print(train_model_by_img("person_name"))
    take_creenshot_from_video()


if __name__ == '__main__':
    main()

Запустить:

python3 test.py -address='test/files/' -name='test.jpg'