Быстрый старт за 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 ГБ.

results matching ""

    No results matching ""