Ошибка при использовании метода setPixel класса QImage, Python |
Здравствуйте, гость ( Вход | Регистрация )
Ошибка при использовании метода setPixel класса QImage, Python |
zuze |
25.3.2013, 7:57
Сообщение
#11
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я сделал так:
Выводиться почему-то так:
А почему вот так не выводится?
|
|
|
lanz |
25.3.2013, 8:33
Сообщение
#12
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
http://docs.python.org/2/library/struct.html
Цитата struct.unpack(fmt, string) Unpack the string (presumably packed by pack(fmt, ...)) according to the given format. The result is a tuple even if it contains exactly one item. The string must contain exactly the amount of data required by the format (len(string) must equal calcsize(fmt)). unpack всегда возвращает tuple ( http://docs.python.org/2/library/stdtypes.html#typesseq ). В кратце - это немодифицируемый массив. Чтобы получить первый элемент нужно обратится к нему как к списку:
Сообщение отредактировал lanz - 25.3.2013, 8:33 |
|
|
zuze |
25.3.2013, 8:54
Сообщение
#13
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
Чтобы получить первый элемент нужно обратится к нему как к списку: Я сделал так как Вы сказали всё стало грамотно выводиться на экран. Появилась ещё одна проблемка. Я сделал так:
Ругается на вторую строчку кода, ошибка: IndexError: tuple index out of range Почему так? Может надо bf[j] в int перевести? |
|
|
lanz |
25.3.2013, 8:56
Сообщение
#14
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата IndexError: tuple index out of range Значит что в tuple нет такого элемента. "B" означает, что считывается один беззнаковый байт и на выходе получаем tuple с одним элементом, поэтому мы не можем использовать j как индекс.
|
|
|
zuze |
25.3.2013, 9:00
Сообщение
#15
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
"B" означает, что считывается один беззнаковый байт и на выходе получаем tuple с одним элементом, поэтому мы не можем использовать j как индекс. А какже тогда быть? Мне надо чтобы через промежуток времения значения менялись, сначало 0 индех, потом 1 индех, затем 2 индех и так далее. |
|
|
lanz |
25.3.2013, 9:20
Сообщение
#16
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Да, но считывается на каждой итерации только один элемент.
Считывает каждый раз следующий элемент из файла. А j влияет на px и py. |
|
|
zuze |
25.3.2013, 9:40
Сообщение
#17
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
lanz |
25.3.2013, 9:45
Сообщение
#18
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
И зачем он тогда в bf[j]?
|
|
|
zuze |
25.3.2013, 9:52
Сообщение
#19
|
Участник Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: 0 |
И зачем он тогда в bf[j]? Вот код:
px, py - смещение bf[j] - это RGB, на одной итерации R, G и B имеют одно значение, то есть R = bf[0], G = bf[0] и B = bf[0]. На следующей итерации R = bf[1], G = bf[1] и B = bf[1] и так далее. Оптимальный вариант был бы двухмерный массив, но ссылку которую Вы дали на описание двухмерного массива выводит на главный сайт. Сообщение отредактировал zuze - 25.3.2013, 9:54 |
|
|
lanz |
25.3.2013, 9:57
Сообщение
#20
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Нет.
На каждой итерации bf содержит (только одно) значение, загруженное из файла на этой итерации. Оптимальный вариант был бы двухмерный массив, но ссылку которую Вы дали на описание двухмерного массива выводит на главный сайт. Вовсе нет, зачем нам хранить данные о цвете в двух местах (массиве и картинке)? |
|
|
Текстовая версия | Сейчас: 29.11.2024, 16:01 |