Быстрый старт за 10 минут
Видеоурок 1 — Введение в OpenMV: https://singtown.com/learn/688
Видеоурок 2 — Распаковка и введение: https://singtown.com/learn/49985
Видеоурок 3 — Установка и использование драйверов и IDE: https://singtown.com/learn/49989/
Загрузка программного обеспечения
Официальный сайт в Китае:http://openmv.cc (нажмите "Загрузка ПО")
Официальный сайт в США: https://openmv.io/pages/download
Windows
После загрузки просто нажимайте "Далее", и установка завершится в обычном
режиме.\

Если окна изображения нет, вы можете вытащить его справа.

Установка драйвера
Подключите OpenMV к компьютеру.\ Обычно драйвер устанавливается автоматически, и ничего устанавливать вручную не требуется. В диспетчере устройств вы увидите:

Но на некоторых компьютерах драйвер может не установиться автоматически.\ В этом случае в диспетчере устройств появится восклицательный знак, означающий, что драйвер установлен неправильно.

В этом случае драйвер нужно установить вручную.\ Сначала скачайте драйвер: https://dl.singtown.com/openmv/openmv_windowsdriver.zip
Распакуйте архив на рабочий стол, затем щёлкните правой кнопкой мыши по устройству в диспетчере устройств и выберите "Обновить драйвер":





Сбой установки драйвера в Windows
Если возникла следующая ситуация (это случается редко и связано со сбоем
компьютера):\

Установка драйвера OpenMV завершилась неудачно. В 90% случаев причина — в самом компьютере: как правило, это облегчённые версии операционной системы и использование программ-оптимизаторов. Решение проблемы с драйвером OpenMV аналогично решению для Arduino.
Это происходит потому, что облегчённая версия Windows удаляет некоторую информацию о редко используемых драйверах.
Справка по устранению неполадок:\ https://forum.singtown.com/topic/230
Наконец, рекомендуется:
- При покупке компьютера выбирайте компьютер с лицензионной системой.
- Включите Windows Update (по умолчанию он включён, не отключайте его).
- Даже если вы используете пиратскую систему, скачивайте чистую и полную версию с MSDN.
- Никогда не устанавливайте систему с помощью Ghost! 90% проблем с драйверами вызваны именно Ghost.
MacOS
После загрузки ПО IDE дважды щёлкните по установщику. Просто нажимайте "Далее".
Если появится сообщение, что можно устанавливать приложения только из App
Store и от проверенных разработчиков, установите значение "Любой источник" в
настройках "Защита и безопасность".\

Ubuntu
В Ubuntu необходимо выдать права на скачанный файл. Затем дважды щёлкните для установки.




Запуск hello world!
Сначала убедитесь, что IDE и драйвер установлены правильно.
Подключите OpenMV к компьютеру через USB-кабель, и появится USB-накопитель

Откройте OpenMV IDE.

Обратите внимание на этот рисунок.
- Нажмите
Connect - затем нажмите
Run
Изображение корректно отображается в окне изображения в правом верхнем углу.\
Нажмите на "Serial Terminal" внизу, и появится окно терминала.\
Одновременно в Serial Terminal будут выводиться данные. Это частота кадров.
Это результат выполнения print(clock.fps()) в строке 17 кода.
Отслеживание мяча
Удалите всё содержимое поля редактирования и замените его следующим кодом:
# Пример обнаружения цветных блобов
#
# Этот пример показывает, как с помощью функции find_blobs() найти цветные
# блобы на изображении
# В этом примере ищется тёмно-зелёный цвет
import csi, image, time
csi0 = csi.CSI()
# Пример отслеживания цвета. Обязательно контролируйте освещение в помещении,
# оно должно быть стабильным.
green_threshold = ( 0, 80, -70, -10, -0, 30)
# Задаём порог зелёного цвета, числа в скобках — это максимальные и
# минимальные значения L, A, B (minL, maxL, minA, maxA, minB, maxB), значения
# LAB выбираются на трёх графиках координат слева от изображения. Если
# изображение в градациях серого, нужно задать только два числа (min, max).
csi0.reset() # Инициализация камеры
csi0.pixformat(csi.RGB565) # Формат RGB565.
csi0.framesize(csi.QQVGA) # Используем QQVGA для большей скорости
csi0.snapshot(time = 2000) # Пропускаем 2000 мс, чтобы новые настройки вступили в силу и автоматически настроился баланс белого
csi0.auto_gain(False) # Отключаем автоматическую регулировку усиления. По умолчанию включена, при распознавании цвета её обязательно нужно отключить.
csi0.auto_whitebal(False)
# Отключаем баланс белого. Баланс белого включён по умолчанию, при распознавании цвета его обязательно нужно отключить.
clock = time.clock() # Отслеживание частоты кадров
while(True):
clock.tick() # Отслеживаем количество миллисекунд между вызовами snapshot().
img = csi0.snapshot() # Получаем изображение с сенсора камеры
blobs = img.find_blobs([green_threshold])
# find_blobs(thresholds, invert=False, roi=Auto), thresholds — это порог
# цвета, кортеж, который нужно заключить в скобки [ ]. invert=1 инвертирует
# порог цвета, invert=False (по умолчанию) не инвертирует. roi задаёт
# область обзора для распознавания цвета, roi — это кортеж,
# roi = (x, y, w, h), обозначающий прямоугольную область шириной w и
# высотой h, начиная от верхнего левого угла (x, y); если roi не задан, по
# умолчанию используется всё изображение. Эта функция возвращает список:
# [0] — координата x верхнего левого угла найденной области целевого
# цвета, [1] — координата y верхнего левого угла, [2] — ширина целевой
# области, [3] — высота целевой области, [4] — количество пикселей в
# целевой области, [5] — координата x центра целевой области, [6] —
# координата y центра целевой области, [7] — угол поворота области
# целевого цвета (в радианах, число с плавающей точкой, остальные элементы
# списка — целые числа), [8] — количество целей, пересекающихся с этой
# целевой областью, [9] — номер цвета (по нему можно определить, каким
# порогом threshold была распознана эта область).
if blobs:
# Если найден целевой цвет
for b in blobs:
# Перебираем найденные области целевого цвета
# Draw a rect around the blob.
img.draw_rectangle(b[0:4]) # rect
# Обводим область целевого цвета прямоугольником
img.draw_cross((b[5], b[6])) # cx, cy
# Рисуем крест в центре области целевого цвета
print(clock.fps()) # Обратите внимание: при подключении OpenMV к компьютеру частота кадров будет примерно в два раза ниже обычной
# Если отключить от компьютера, частота кадров увеличится
После запуска программы

Эта программа будет искать цветные блобы по порогу green_threshold.
Изменение порога
Итак, как изменить этот порог самостоятельно? Как узнать цветовой порог нашего объекта?
- Сначала найдите целевой цвет в камере и обведите прямоугольником целевой цвет в буфере кадра, зажав левую кнопку мыши.
- На графике координат под буфером кадра выберите цветовое пространство LAB.

- Три графика координат представляют значения LAB цветов в выделенной прямоугольной области; выберите максимальные и минимальные значения на трёх графиках, то есть (0, 60, -70, -10, -0, 30)

Файловая система
Файловая система — особенно выдающаяся функция OpenMV (или MicroPython). Что такое файловая система? Проще говоря, это различные папки и файлы, собранные в древовидную структуру — иначе говоря, ваш USB-накопитель. И вы можете использовать путь в коде для чтения файлов, создания файлов и так далее.

Автономная работа
Приложение к видеоуроку 2 — Автономная работа: https://singtown.com/video
Тогда возникает вопрос: зачем OpenMV поддержка файловой системы?
Ответ: это очень удобно!\ OpenMV представляет встроенную флеш-память в виде файловой системы. Когда вы подключаете OpenMV к компьютеру, компьютер отображает USB-накопитель! Внутри находится файловая система OpenMV. Когда вы хотите "прошить" код, просто скопируйте файл скрипта в main.py этого "USB-накопителя". При каждом включении питания OpenMV автоматически запускает находящийся внутри main.py, что позволяет ему работать автономно.
Загрузка в один клик
На панели инструментов нажмите сохранить открытый скрипт на OpenMV Cam (как
main.py), и IDE автоматически сохранит текущий файл как main.py, что очень
удобно.

Питание
У OpenMV есть два входа питания:
- VIN (иногда также обозначается как VCC)
- USB-вход
Напряжение на VIN должно быть 3,6–5 В, рекомендуется 5 В.\ USB и VIN можно использовать для питания одновременно.

У OpenMV есть выход питания:
- 3,3 В — это напряжение выдаётся стабилизатором OpenMV и используется для питания других датчиков. Обратите внимание: не подавайте питание напрямую на 3,3 В, без защиты внутренней микросхемы её легко сжечь.
SD-карта
Что делать, если в моём коде 100 000 строк, и встроенной флеш-памяти не хватает? Что делать, если я хочу сохранять снимки?
Ответ: вы можете использовать SD-карту!

Как же использовать SD-карту? SD-карта — тоже файловая система. При включении
питания, если SD-карта вставлена, её файловая система автоматически заменит
встроенную файловую систему Flash. При каждом включении питания будет
запускаться main.py на SD-карте. Разве это не интуитивно понятно и удобно?
Максимальный объём SD-карты — 32 ГБ.