Сохранение изображений в opencv и pyauto gui в интерактивном режиме с пользователем - PullRequest
0 голосов
/ 09 января 2020

У меня есть код ниже, который я пытаюсь сделать следующим образом: Начинает захват изображения камеры, но хотел также отобразить диалоговое окно, содержащее текстовое поле и кнопку «ОК», где пользователь должен ввести значение и нажать клавишу Кнопка «ОК» затем Scritp сохраняет изображение (JPG), называя его со значением, которое передал пользователь.

import cv2
import time
import pyautogui

camera_port = 0

camera = cv2.VideoCapture(camera_port)
camera.set(3, 1280)# set the resolution
camera.set(4, 1024)

emLoop = True

while (emLoop):

    retval, img = camera.read()
    #gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Foto', img)

    k = cv2.waitKey(100)

    if k == 27:
        emLoop = False

    elif k == ord('s'):
        nome = input(pyautogui.prompt(text='Scanei o código.', title='Aviso:', default=''))
        cv2.imwrite(nome, img)

camera.release()
cv2.destroyAllWindows()

Захват всегда будет активным и до тех пор, пока пользователь вводит значения и нажимает «ОК» "сохранит изображения, когда пользователь нажмет на диалоговое окно" отмена ", завершит захват и завершит сценарий. Я пытаюсь сделать это, но пока безуспешно ...: (

1 Ответ

0 голосов
/ 09 января 2020

Функция pyautogui.prompt открывает диалоговое окно с текстовым полем, в котором пользователь может ввести то, что будет возвращено. Это похоже на то, как работает функция input. Оба имеют строку в качестве аргумента, которая будет отображаться в виде сообщения-подсказки для пользователя. Разница в том, что первый использует терминал в качестве интерфейса ввода вместо диалогового окна.

Это выглядит странно, смешивая их так, как вы пытаетесь: nome = input(pyautogui.prompt(...)). Это означает что-то вроде: Откройте диалоговое окно, чтобы пользователь мог напечатать сообщение с подсказкой, которое будет отображаться для него в консоли. После этого он снова печатает что-то, что будет возвращено в переменную nome.

Попробуйте либо это:

nome = pyautogui.prompt(text='Scanei o código.', title='Aviso:', default='')

Или это:

nome = input('Aviso: Scanei o código.')
...