В прошлой статье мы рассмотрели установку Python для S60 и работу в интерактивной консоли, сегодня мы рассмотрим возможности работы Python с камерой мобильного телефона.
Для работы с камерой в Python существует специальный модуль
Причем если мы просто напишем в консоли
Для этого перед подключением камеры нам необходимо добавить строку
Для того чтобы включить превью камеры необходимо получить канвас нашей формы, для этого:
Также предварительно необходимо подготовить небольшую функцию для инициализации превью:
Ну и теперь мы смело можем запускать предпросмотрщик:
здесь указаны размера окна предпросмотра – они могут быть произвольного размера.
Теперь же нам необходимо сделать снимок с камеры, для этого добавим к центральной кнопке возможность делать фото:
здесь:
для начала необходимо отключить предпросмотр:
затем самое главное – получить фото с камеры, для этого служит функция camera.take_photo, которая может принимать множество параметров, таких как zoom, использование вспышки, размер фото и другие. Мы задаем лишь размер фото.
Вот собственно и то чего мы и добавались – получить фото с камеры. В результате мы имеем объект класса Image который поддерживает основные операции, такие как – ресайзинг, сохранение, добавление текста, рисование простых фигур и другие.
Для того чтобы сохранить полученное изображение используется функция save, которая принимает имя файла и степень качества jpeg от 1 до 99
Ниже представлена небольшая программа с возможностью выбора разрешения фото и подробными комментариями.
Исходный код сюда не смог написать, так как хабр съедает все пробелы в начале строк, а для питона это критично, так что смотрим исходник с комментариями тут
Итак, приступим...
Для работы с камерой в Python существует специальный модуль
camera
. Для начала получим разрешения фото поддерживаемые камерой: import camera
sizes = camera.image_sizes()
Причем если мы просто напишем в консоли
camera.image_sizes
то получим весьма странные результаты – что разрешение камеры не больше 2-х мегапикселей. Для того чтобы была возможность получать фото во всю “мощь” камеры необходимо первоначально перевести приложение в пейзажный режим (горизонтальный).Для этого перед подключением камеры нам необходимо добавить строку
appuifw.app.orientation = 'landscape'
.Для того чтобы включить превью камеры необходимо получить канвас нашей формы, для этого:
canvas = appuifw.Canvas()
Также предварительно необходимо подготовить небольшую функцию для инициализации превью:
def cam_finder(im):
canvas.blit(im)
Ну и теперь мы смело можем запускать предпросмотрщик:
camera.start_finder(cam_finder, size=(320,240))
здесь указаны размера окна предпросмотра – они могут быть произвольного размера.
Теперь же нам необходимо сделать снимок с камеры, для этого добавим к центральной кнопке возможность делать фото:
canvas.bind(key_codes.EKeySelect, take_picture)
здесь:
EKeySelect
– это центральная кнопка джойстика, take_picture
– это функция которая будет выполняться при нажатии кнопки, напишем ее:для начала необходимо отключить предпросмотр:
camera.stop_finder()
затем самое главное – получить фото с камеры, для этого служит функция camera.take_photo, которая может принимать множество параметров, таких как zoom, использование вспышки, размер фото и другие. Мы задаем лишь размер фото.
pic = camera.take_photo(size = (cur_w,cur_h))
Вот собственно и то чего мы и добавались – получить фото с камеры. В результате мы имеем объект класса Image который поддерживает основные операции, такие как – ресайзинг, сохранение, добавление текста, рисование простых фигур и другие.
Для того чтобы сохранить полученное изображение используется функция save, которая принимает имя файла и степень качества jpeg от 1 до 99
pic.save(filename, quality=75)
Ниже представлена небольшая программа с возможностью выбора разрешения фото и подробными комментариями.
Исходный код сюда не смог написать, так как хабр съедает все пробелы в начале строк, а для питона это критично, так что смотрим исходник с комментариями тут