2016-10-26 6 views
1

У меня есть эти два заявления в конце моей питона программы:cv2.waitKey (0) не работает, OpenCV 3.1.0, Mac OS X 10.11.6, Python 2.7.12

cv2.waitKey(0) 
cv2.destroyAllWindows() 

Как-то CV2 .waitKey (0) не работает, никакого ответа на ввод с клавиатуры 0, чтобы закончить мою программу, мне пришлось закрыть окно терминала Mac.

Я попробовал следующее исправить неполадку

if cv2.waitKey(0) & 0xFF == ord('q'): 
    break 

я получил это сообщение: SyntaxError: «перерыв» вне цикла

Не уверен, что это неправильно. Я использую Macbook Air, Mac OS X 10.11.6 Пожалуйста, помогите.

Благодаря

ответ

1

Просто чтобы быть ясно, WaitKey (0) не означает, что ввод с клавиатуры «0» завершит программу. Это означает, что ваша программа будет бесконечно ждать, пока вы не нажмете клавишу перед выполнением следующей строки кода.

waitKey (30) означает, что программа будет ждать 30 мс для нажатия клавиши, затем она будет двигаться дальше.

за ошибки 'break' outside loop, принципиально использовать «перерыв» ключевое слово внутри а «за» или «в то время как» петля только остановить зацикливание. Таким образом, вы должны убедиться, что вы вызываете «перерыва», если есть петли, участвующие в коде, например, так:

while True: 
     #do your thing 
     if cv2.waitKey(0) & 0xFF == ord('q'): 
      break #this loop will break if you press 'q', else it'll wait 

Скажет нет петель в вашей программе, то заменить «перерыв» заявление, в котором 'return'

1

Не совсем уверен без полного кода, но «перерыв» снаружи цикла, вероятно, из-за отступа?