В настоящее время я пытаюсь запрограммировать сценарий для моего школьного проекта. Предполагается, что один пиксель берется из питания камеры и измеряется в этом месте несколько раз (для шумоподавления). Часть моего кода, что я не удовлетворен в настоящее время выглядит следующим образом:Python script: создание рабочего цикла
canon.ScanXY(x,y)
img_1 = canon.FetchImage(0, 1 * 1)
canon.StopScan()
canon.ScanXY(x,y)
img_2 = canon.FetchImage(0, 1 * 1)
canon.StopScan()
...
canon.ScanXY(x,y)
img_xxx = canon.FetchImage(0, 1 * 1)
canon.StopScan()
выше код возвращает строку с именем img_xxx где ххх обозначает определенное число. Мне было интересно, если есть более простой способ сделать это. Я пытался зациклить функцию, но не смог сделать это, чтобы у меня был другой результат с каждой итерации. И в конце концов, мне нужно добавить все те вместе, чтобы создать одну строку из всех, которые были созданы раньше:
img_final = (img_1 + img_2 + img_3 + ... + img_xxx)
и, наконец, распечатать картинку из результата, используя
img = np.fromstring(img_final, dtype="uint8").reshape(8,8)
fig, ax = plt.subplots()
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
ax.set_xticklabels((0,1))
x=ax.imshow(img,cmap="gray")
Код работает, но если я хочу что-то изменить, это займет много времени. До сих пор я работал с 64 или менее строками, но хочу уточнить результаты, поэтому мне понадобится гораздо больше итераций. Любая помощь будет оценена по достоинству.
* «Я пытался петля функции, но не смогли сделать это так, что у меня есть другой результат от каждой итерации.» * - Пожалуйста, покажите, что вы пробовали, и где были проблемы. Как это не подходит для SO – UnholySheep
Я думаю, вы говорите, что 'canon.FetchImage (0, 1 * 1)' возвращает строку, содержащую данные оттенков серого в пикселе (x, y)? Это верно? Являются ли данные в этой строке одним байтом? Кроме того, я предполагаю, что вы используете Python 2, поскольку в Python 3 вы будете использовать объекты 'bytes' вместо строк. –
Функция FetchImage может хранить даже большие изображения, часть '1 * 1' означает размер изображения. Однако для нашего приложения нам нужен только один пиксель, и да, я допустил ошибку, так как я использую Python 3, он действительно использует объекты 'bytes'. И для предыдущего вопроса я попытался зациклить его с помощью функции 'for' – Dannyus