OpenCV: Как использовать cvWaitKey () для формирования другого потока, отличного от того, которое создало окно? - PullRequest
0 голосов
/ 27 сентября 2010

У меня проблема здесь, и мне нужна ваша помощь. Я пытался захватить удары клавиатуры из созданного окна с помощью функции cvWaitKey (). Функция работает нормально, если я вызвал cvWaitKey из того же потока, который создал окно, но когда я создаю окно из потока и вызываю cvWaitKey () из другого потока, он не возвращает правильный ключ, он блокирует cvWaitKey (0) и возвращает -1 для любого превышения времени ожидания, чем ноль.

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Да, это не может работать.cvWaitKey () реализуется путем вызова функции PeekMessage () API.Это может видеть только сообщения в очереди сообщений, которая связана с потоком.В созданном вами потоке нет окон.

Для этого нет очевидного обходного пути, вы должны вызвать его в потоке, создавшем окно.Вызов GetAsyncKeyState () может работать, хотя это совсем другой подход.

0 голосов
/ 27 сентября 2010

В вашем «другом» потоке вы можете установить для какой-либо общей переменной значение true или false (или некоторое значение) и заставить «оконный поток» проверять его, прежде чем принимать решение о вызове cvWaitKey () в своей локальной области.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...