使用 opencv 和 pyautogui 与用户交互保存图像



我有下面的代码,我尝试执行以下操作: 开始捕获相机图像,但还希望显示一个包含文本字段和"确定"按钮的对话框,用户必须在其中输入一个值并按"确定"按钮,然后 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()

捕获将始终处于活动状态,只要用户输入值并单击"确定"将保存图像,当用户单击"取消"对话框时,将结束捕获并终止脚本。 我正在尝试这样做,但到目前为止还没有成功... :(

该函数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.')

最新更新