Я создал графический интерфейс с помощью Tkinter. Он имеет три кнопки. один для захвата изображения. второй для захвата непрерывных изображений, пока я не нажму третью кнопку, т.е. кнопку остановки.
Когда я нажимаю первую кнопку, она работает нормально, т. Е. Запускается функция, которая захватывает изображение и сохраняет его в определенном месте.
Но когда я нажимаю вторую кнопку для непрерывной съемки изображений, она начинает захватывать изображения, но кнопка застревает или графический интерфейс перестает работать. из-за этого я не могу остановить этот непрерывный захват изображений, потому что я не могу нажать третью кнопку, то есть кнопку остановки.
Я выполняю цикл while для непрерывной записи изображений и могу разорвать этот цикл только в том случае, если глобальная переменная STOP будет иметь «0», а я могу только обнулить ее, нажав кнопку остановки в графическом интерфейсе. Но я не могу нажать кнопку «Стоп», чтобы сделать эту переменную STOP «0», чтобы цикл мог оборваться. Я думаю, что в то время как цикл останавливает основной цикл GUI и создает эту проблему. если у вас есть альтернатива или решение, пожалуйста, поделитесь им. это код
Вторая кнопка просто вызвать эту функцию
def capture_video():
stop = '1'
l=Lepton()
l.enter()
path="/home/ubuntu/Desktop/IR_videos/vid_"
file=open("/home/ubuntu/Desktop/IR_videos/vid_no.txt",'r')
no=file.read()
file.close()
folder_name=path+no
os.mkdir(folder_name)
i=0
print("Image capturing started")
print("____Press Stop button to stop____")
while True:
a=l.capture()
cv2.normalize(a,a,0,65535,cv2.NORM_MINMAX)
np.right_shift(a,8,a)
img=np.uint8(a)
img_name=folder_name+"/"+str(i)+".jpg"
cv2.imwrite(img_name,img)
i=i+1
if stop == "0":
print("Image capturing stoped\n")
print("Press video button to capture again")
break
no=int(no)+1
file=open("/home/ubuntu/Desktop/IR_videos/vid_no.txt",'w')
file.write(str(no))
file.close()
cv2.destroyAllWindows()
l.exit()
здесь lepton - это класс, а capture () - функция для захвата изображения с камеры flir lepton
и это код функции кнопки останова GUI:
def stop_it():
lep.stop='0'
time.sleep(1)
lep.stop='1'