banner
Дом / Новости / Как сделать автоматический сканер 35-мм пленки с помощью Arduino Nano и Python
Новости

Как сделать автоматический сканер 35-мм пленки с помощью Arduino Nano и Python

Mar 09, 2024Mar 09, 2024

Ждать, пока планшетные сканеры отсканируют цветную негативную пленку, не стоит волноваться. Этот процесс и последующая предварительная коррекция цвета могут занять от часа до двух.

Типичная установка для сканирования цифровой камерой включает в себя цифровую камеру, штатив (или подставку для копирования) и носитель пленки. Я думаю, что среди этих трех предметов самым дефицитным является пленкодержатель. К счастью, такие компании, как Negative Supply, начали производить столь необходимые носители пленки. Но они также могут быть довольно дорогими. К счастью, любой носитель пленки, сделанный своими руками из картона и способный толкать и тянуть неразрезанную пленку формата 135 (35 мм) с помощью простой системы вала, подойдет отлично. Подробнее об этом позже!

Немного предыстории. Сразу хочу сказать, что я не связан с Negative Supply, Capture One или Negative Lab Pro. У меня есть их продукты, и мне нравится ими пользоваться (пока). Раньше я пользовался почтенным Epson V600 для сканирования пленок. Это было очень приятно, поскольку позволяло мне сканировать собственные пленки, но скорости не было. Более того, мне не до конца нравились зерна, которые я получал.

Однако причины, по которым я решил сделать этот проект, более многогранны. Мне нравится поддерживать киносообщество и кинокомпании, такие как Negative Supply, Lomography и Negative Lab Pro. Мне также нравится идея слегка подтолкнуть сообщество DIY к этой нишевой области. Наконец, мне также очень хотелось впервые запрограммировать микроконтроллер. Принятие этого проекта заставило меня задуматься о многом. Признаюсь, всего месяц назад я не мог отличить Arduino от Raspberry Pi.

Случайно остановившись на Arduino, в основном из-за его цены, мне нужно было найти проблему, которую нужно было решить.

Это НЕ заняло много времени! Сначала я исправил проблему с разработчиком UniRoller, возникшую в результате использования экспертного резервуара JOBO 3010. А затем я сосредоточился на автоматическом поливе растений томатов во время походов. И мой последний и текущий проект заключался в том, чтобы исправить проблему, возникшую при сканировании пленок. Это также дало мне повод попрактиковаться в программировании на Python.

На сегодняшний день я завершил две отдельные программы сканирования пленок. Один написан на языке Python, а другой — на C++ (также называемый эскизом Arduino). Оба они используют одно и то же оборудование, но существуют существенные различия в том, как они функционируют. Один из них поддерживается компьютерным зрением Python и полностью автономен (автоматическое позиционирование, съемка изображений и переход к следующему кадру). Другой лишь механизирует ход фильма. Пользователь вносит необходимые коррективы в положение пленки, а затем делает снимок с помощью кнопок контроллера.

Для реализации этого проекта знание Python (C/C++ для Arduino) было бы идеальным, но не обязательно нажимать кнопку запуска в браузере, на котором работает Jupyter Notebook (находится в Anaconda). Тем не менее, пользователю необходимо загрузить Python и 4 библиотеки. Я настоятельно рекомендую пакет Anaconda, поскольку это универсальное решение с очень богатым интернет-сообществом.

После этой установки также потребуются библиотеки Python, Numpy, pyFirmata, SciPy и cv2. Вы можете установить эти библиотеки Python с помощью Anaconda-Navigator или PIP install em из терминала. В Интернете полно инструкций по этому вопросу. При этом я использовал веб-интерфейс Jupyter для создания и запуска кода Python. Эти программы будут иметь расширение ipynb. Однако лучше всего начать с установки Arduino IDE, поскольку именно здесь все и начинается (скрипты Arduino имеют расширение .ino). Подробности об этом будут позже.

Хорошо, давайте перейдем к самой потрясающей настройке:

Давайте посмотрим на эту установку в действии!

Режим 1: Только Arduino и ручная коррекция положения:

Режим 2: Автоматическая коррекция с помощью Python:

Режим 3: Arduino плюс Python в действии на картонном пленочном носителе своими руками: