Торможения таймера при рисовании, Python |
Здравствуйте, гость ( Вход | Регистрация )
Торможения таймера при рисовании, Python |
lanz |
9.4.2013, 8:25
Сообщение
#31
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
И в том треде я писал, что надо вынести этот код из таймера.
И вообще, насколько я помню файлы запрещено использовать, значит данные будут приходить не из файлов, а каким то другим путем. Из сокетов или из порта/карты захвата. Значит надо формировать картинки по событию поступления их в программу. И добавлять в очередь например, но каждый кадр перерисовывать их нельзя. |
|
|
zuze |
9.4.2013, 9:40
Сообщение
#32
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
И вообще, насколько я помню файлы запрещено использовать, значит данные будут приходить не из файлов Так как это эмуляция, то в настоящий момент использую файлы. Как я понял всё работает прекрасно, если избавится от циклов. Вот код:
То есть мне надо избавится от циклов в двух моментах: 1. Вывод изображений на экран. 2. Заполнения объекта QImage значениями из файла. Если я в пункте номер 1 избавляюсь от циклов с помощью drawImage, то от циклов во втором пункте я не смог изавится. Может кто знает, как избавится от циклов в обоих пунктах? Сообщение отредактировал zuze - 9.4.2013, 9:59 |
|
|
lanz |
9.4.2013, 13:35
Сообщение
#33
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Во втором пункте никак не избавиться.
С какой скоростью появляются новые картинки? |
|
|
zuze |
9.4.2013, 13:38
Сообщение
#34
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
lanz |
10.4.2013, 14:20
Сообщение
#35
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
А сколько времени должна рисоваться одна картинка?
|
|
|
zuze |
10.4.2013, 15:55
Сообщение
#36
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
А сколько времени должна рисоваться одна картинка? Самая маленькая скорость появление следующей картинки будет, через 10 секунд, а самая большая скорось появление следующей картинки будет, через 0,05 секунды. При скорости рисовании картинки 0,05 * 1000 мс, рисования одного кусочка картинки (0,05 * 1000) / 60 мс При скорости рисовании картинки 10 * 1000 мс, рисования одного кусочка картинки (10 * 1000) / 60 мс То есть за время "0,05 * 1000 мс" или "10 * 1000 мс" рисунок нарисуется полностью за 60 раз срабатывания таймера. Сообщение отредактировал zuze - 10.4.2013, 15:55 |
|
|
lanz |
10.4.2013, 16:21
Сообщение
#37
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Очень странные цифры, за 50 мс - это два - три кадра, зачем перерисовывать картинку 60 раз?
И если надо так быстро получать картинки, используйте numpy например, а потом загружайте картинку напрямую через QImage::scanline () |
|
|
zuze |
11.4.2013, 15:16
Сообщение
#38
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
зачем перерисовывать картинку 60 раз? Я не всю картинку перерисовываю 60 раз, а я дорисовываю, кусочек картинки каждый раз и полностью картинка появляется когда пройдёт таймер 60 раз. И если надо так быстро получать картинки, используйте numpy например, а потом загружайте картинку напрямую через QImage::scanline()
Но вот как правильно загрузить я не понял. Помогите пожалуйста это понять. Я пробовал так сделать:
Для вывода так делаю:
Выдаётся вот такая ошибка: im = QtGui.QImage.__init__(self, self, 492, 720, self.Format_Indexed8) TypeError: 'sip.methoddescriptor' object is not callable Я пробовал в место
Написать
Пробоывал ещё так:
Таже самая ошибка. Не знаю важно или нет, но у меня Python 2.6 Как я понял я не правильно конструктор определил, а вот как правильно не понимаю. Помогите пожалуйста понять. Сообщение отредактировал zuze - 15.4.2013, 9:12 |
|
|
zuze |
15.4.2013, 13:06
Сообщение
#39
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
Сделал так:
Это ошибка пропадает. Но в момент первого срабатывания таймера возникает ошибка: Появляется окно с выбором из трёх кнопок: 1 кнопка (Искать решение проблемы в Интернете и закрыть программу) 2 кнопка (Закрыть программу) 3 кнопка (отладить программу) А текстом пишется: Process finished with exit code -1073741819 В чём может быть дело? |
|
|
lanz |
15.4.2013, 13:55
Сообщение
#40
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Ошибка при работе с памятью скорее всего, видимо с размером что то напутано.
Выложите проект, попробую потыркать. |
|
|
Текстовая версия | Сейчас: 26.11.2024, 16:11 |