В целом довольно интересно наблюдать и изучать поведение различных объектов при изменении условий. А тут мне ещё осенью того года попались на глаза адениумы — пустынные растения, что выживают в весьма экстремальных условиях, но при этом довольно красиво цветут. И решил я себе такую радость завести.
Купил совсем маленького и решил понаблюдать за его ростом.
В начале взял простенькую вебку и грузил с неё фото на Народмон, потом решил протестировать ESP32 cam. Обе камеры давали достаточно паршивое качество. Одна старая, другая имела неподходящее расстояние для фокуса. И в результате у меня получился 4хминутный таймлапс, содержащий примерно 3,5 месяца жизни растения. Правда он представляет лишь скромный научный интерес.
Но наконец дошли руки для этого дела приспособить камеру, которую я брал для машинного зрения. Они отличается от предыдущих тем, что имеет встроенный аппаратный автофокус.
Камера построена на модуле IMX179, 8Мп, но самое главное — встроенный автофокус, который позволяет снимать даже простенькое макро. Что в данном случае и интересно. Брал на Али, тут.
Собрал установку, сделал фоточку:
Что делаем с картинкой?
Далее загружаем картинку на Народный мониторинг, используем просто как место хранения и наблюдения. Как грузить картинку с камеры на Raspberry pi — уже описывал.
Отличие в данном случае в том, что в качестве МК для получения и обработки картинки используется Orange pi zero 3, к которой подключена через USB камера.
Для получения изображения используется связка OpenCV и python3. для получения с USB-камеры картинки под linux-системами необходимо поставить модуль v4l-utils.
Найти номер камеры для источника в OpenCV можно используя команду lsusb.
Пример базового кода для получения картинки на python при работе на orange pi zero 3 или ином микрокомпьютере:
import cv2 # импорт модуля openCV
camera = '/dev/video1' #указать верно из lsusb
cap = cv2.VideoCapture(camera, cv2.CAP_V4L2) # видео поток с веб камеры параметры для usb-камеры на апельсинке, через модуль v4l-utils
while 1:
ret, frame1 = cap.read()
cv2.imshow("frame1", frame1) # вывести фрейм
cap.release()
cv2.destroyAllWindows()
Установка
Для того, что бы всё это дело ровно стояло, не двигалось и камера не смещалась в процессе съёмки, собрал всю эту радость в единый объект.
Для камеры из своих стандартных корпусов сделал коробочку. А плату orange pi zero 3 прикрутил на саморезы. Она отлично поместилась на задней части корпуса.
На апельсинку решил не лепить радиатор, так как отправка картинки раз в 10 минут не является серьёзной задачей для современных МК.
Но зато я всю конструкцию прилепил к огромному радиатору, который является и подставкой, и штативом, и обеспечивает необходимую массу для камеры.
Ну и в самом конце, конечно же я из полученных фоток слепил таймлапсик. Пока всего лишь пара дней. Но, как мне кажется, выглядит гораздо прикольнее, чем предыдущий.
Итак, поделился фоточками, видео и небольшим применением камеры, апельсинки и python.
Если есть желание узнать, что ещё можно сделать на основе подобной платформы и для чего применять — пишите в комментариях.
*а автор тем временем пойдёт придумывать как ему описать ещё одну железку...*