Я запускаю поток камеры, который зацикливается и рисует на CanvasFrame до тех пор, пока не будет нажата кнопка пользовательского интерфейса. ЭТО РАБОТАЕТ ОТЛИЧНО.
В ответ на нажатие кнопки пользовательского интерфейса я останавливаю поток (который запускает функцию «grabber.stop»). Затем я беру последнее изображение и отображаю его на панели. ЭТО РАБОТАЕТ ОТЛИЧНО (я знаю, как отобразить изображение, спасибо). Я бы закончил, за исключением того, что CanvasFrame — это отдельное окно, которое отстой.
Поэтому вместо этого я хочу запустить поток камеры, который зацикливается и НЕ рисует на CanvasFrame. Вместо этого он просто хранит внутреннюю копию последнего изображения. Затем, чтобы отобразить в моем пользовательском интерфейсе, я устанавливаю таймер (который срабатывает правильно) и просто отображаю последнее изображение на своей панели. ЭТО НЕ РАБОТАЕТ - панель остается пустой. И все же, чем этот случай отличается от случая, который работает? Отличие только в том, что граббер в потоке камеры еще не остановлен. Это нормально, когда камера НЕ находится в петле захвата, но НЕ будет отображаться, когда она находится в петле. И я стараюсь делать cvCopy изображений, которые я передаю в пользовательский интерфейс, чтобы не было проблем с конкуренцией за память.
Я также скажу, что отображение на CanvasFrame в цикле, по-видимому, запускает мой автофокус Logitech C920, в то время как просто захват одного изображения и его отображение (что я могу легко сделать, пока захват остановлен), похоже, НЕ работает автоматически. -фокус.
В результате CanvasFrame, кажется, делает много сложных вещей в фоновом режиме, которые не могут быть сопоставлены с помощью только захвата.
Сэм, я видел твое имя в исходном коде CanvasFrame, так что ты лучше всех знаешь, в чем разница между двумя моими сценариями.
person
Guy Schafer
schedule
04.01.2013