Попытка изменить видеокадр с помощью клавиш - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь выполнить операции обрезки для каждого кадра, поэтому я хочу, чтобы каждый кадр в цикле оставался в режиме ожидания до нажатия определенной клавиши. Часть цикла кода имеет следующий вид:

while (True):

    # display the image and wait for a keypress
    ret, frame = cap.read()
    if not ret:
        print ('Process completed')
        break

    clone = frame.copy()
    cv2.imshow('frame',frame)

    if len(refPt) == 2:
        roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]]
        cv2.imshow("ROI", roi)
        cv2.imwrite('New folder\\'+str(fileNum)+'.png',roi)
        fileNum += 1
        refPt.clear()
        #cv2.waitKey(0)

    key = cv2.waitKey(1) & 0xFF

    # if the 'q' key is pressed, exit from loop
    if key == ord("q"):
        break

    #if the 'n' key is pressed, go to next frame
    if key == ord("n"):
        continue

Когда видео зацикливается, оно не останавливается и не ждет, пока изменится нажатие клавиши 'n', скорее кадр быстро перемещается, пока я не нажму и не перетяну какую-то точку, которая активирует выбор части региона.

Я чувствую, что мое состояние не в порядке. Помоги мне с условием времени.

1 Ответ

0 голосов
/ 01 ноября 2018

Эта команда ждет только 1 мс, а затем продолжается.

key = cv2.waitKey(1) & 0xFF 

попробуйте изменить его на

key = cv2.waitKey(0) & 0xFF

это должно подождать, пока клавиша не будет нажата, если окно cv доступно.

...