Python + OpenCV = Обработка изображений
Для создания на компьютере и/или на мини компьютере робота (например raspberry pi) программ моделирования компьютерного зрения, нейронных сетей и других задач искусственного интеллекта (ИИ) нам потребуется изучить язык Python, краткий учебник по Python здесь. Почему Python, потому что он самый распространенный в мире решения задач ИИ, поэтому наработано множество готовых программ и библиотек на этом языке, которые мы будем использовать совершенно бесплатно.
Кроме того нам понадобится Anaconda® - это менеджер пакетов, менеджер среды и дистрибутива Python и коллекция из более чем 1000 + пакетов с открытым исходным кодом . Он бесплатный и простой в установке, и он предполагает бесплатную поддержку сообщества.
И для удобства работы с языком Python нам потребуется отладчик или проще говоря IDE: интегрированная среда разработки от компании JetBrains: IDE PyCharm — предоставляет средства для анализа кода, графический отладчик, инструмент для запуска юнит-тестов и поддерживает веб-разработку на Django.
1. Скачиваем с официального сайта дистрибутив языка Python на свой компьютер в любую папку. 2. Скачиваем с официального сайта дистрибутив менеджера языка Python Анаконда на свой компьютер в ту любую папку. 3. Скачиваем с официального сайта дистрибутив IDE PyCharm для языка Python на свой компьютер в ту любую папку.
Устанавливаем язык Python, Anaconda и IDE PyCharm на свой компьютер по инструкции на этой странице
Проверить работу менеджера Anaconda можно просто запустить Anaconda Navigator (графический в браузере) или Anaconda Promt (командная строка) через меню Windows, там же находится IDE PyCharm:
Изучаем язык Python посмотрев видео от Гоши Дударь и всего лишь за час:
Для обработки изображений нам понадобятся библиотеки OpenCV и NumPy для языка Python.
OpenCV (англ. Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++, также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков. Может свободно использоваться в академических и коммерческих целях — распространяется в условиях лицензии BSD.
NumPy — библиотека с открытым исходным кодом для языка программирования Python. Возможности:
• поддержка многомерных массивов (включая матрицы кадров изображений);
• поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами.
Скачиваем дистрибутив OpenCV с сайта Лаборатории флуоресцентной динамики университета Калифорнии на свой компьютер, в ту любую папку куда скачивали дистрибутив Python. Выбираем необходимую нам версию например: opencv_python‑3.4.3‑cp37‑cp37m‑win32.whl где: opencv_python‑3.4.3 - версия OpenCV; ‑cp37‑cp37m - без поддержки версии языка СPython; ‑win32 - для 32 разрядной версии Windows и Python предназначена.
Устанавливаем OpenCV на свой компьютер, с помощью поставляемой вместе с Python утилиты pip. Для этого в командной строке Windows (CMD) выполняем команду:
pip install <путь к папке где находится дистрибутив OpenCV>/opencv_python‑3.4.3‑cp37‑cp37m‑win32.whl
После установки в командной строке Python проверяем правильность установки OpenCV. Для этого импортируем библиотеку cv2 (имя библиотеки с переходом на 3 версию не меняли). Для этого в командной строке Windows (CMD) выполняем следующие команды:
>python
>>> import cv2
Никаких ошибок не должно быть.
Для корректной работы OpenCV устанавливаем библиотеку NumPy:
pip install numpy
Смотрим кино от Образования Будущего про компьютерное зрение:
Создаем свою первую программу захвата и обработки изображения с видеокамеры ноутбука или с USB WEB камеры
import numpy as np import cv2 cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('Video', frame) cv2.imshow('Frame', gray) print(frame) #print(gray) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
Кто понял, что выше написано может ниже не читать, а кто не понял, читаем расшифровку:
#подключаем библиотеку numpy c сокращением названия библиотеки до np что позволяет нам получать доступ к numpy объектам используя запись: np.название объекта import numpy as np #подключаем библиотеку OpenCV c сокращением названия библиотеки до cv2 позволяет нам получать доступ к OpenCV объектам используя запись вида: cv2.название объекта import cv2 #выполняем видеозахват с помощью метода VideoCapture(1) библиотеки cv2: 0 – встроенная камера ноутбука; 1 – например подключаемая к USB WEB камера; C:\video\video1.mp3 – видеозахват из файла. cap = cv2.VideoCapture(1) #Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл whileиспользуется, когда невозможно определить точное значение количества проходов исполнения цикла. (True) – цикл выполняется до тех пор пока не станет истинной выполнение условия в выражении if cv2.waitKey(1) & 0xFF == ord('q'): while(True): ret, frame = cap.read() #конвертируем методом cvtColor изображение из цветного кадра frame в черно-белый кадр gray с флагом COLOR_BGR2GRAY, который указывает на преобразование типа BGR Gray gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # вывод методом imshow цветного изображения покадрово из переменной frame в окно с названием Video; cv2.imshow('Video', frame) # вывод методом imshow черно-белого изображения покадрово из переменной gray в окно с названием Frame; cv2.imshow('Frame', gray) #Выход из цикла while(True) по условию if при нажатии клавиши q; if cv2.waitKey(1) & 0xFF == ord('q'): break #Закрываем канал видеозахвата; cap.release() #Закрываем все окна открытые программой; cv2.destroyAllWindows()
Рис. 2 Вывод методом imshow цветного изображения покадрово frame в окно с названием Video; cv2.imshow('Video', frame)
Рис. 3 Вывод методом imshow черно-белого изображения покадрово из переменной gray в окно с названием Frame; cv2.imshow('Frame', gray)
Краткий учебник по Python здесь . . . Операторы и выражения языка Python здесь . . .
Метод Python os.listdir () здесь . . .
SciPy — библиотека для языка программирования Python с открытым исходным кодом, предназначенная для выполнения научных и инженерных расчётов. Википедия . . .
Учебник Python Numpy здесь . . . Python для универсального доступа к архиву на основе libarchive здесь . . .
Живы здоровы.
Прошу выслать код(программу)видео замка для нескольких лиц.Сообщите стоимость.
С уважением Чекин Виктор,Россия,Воронеж,8 9525539621,mveo@yandex.ru
Добрый день. Подскажите как сделать фото заданного размера (нужно width = 640
height = 360) вот код
import cv2
cam = cv2.VideoCapture(0)
cv2.namedWindow(«test»)
img_counter = 0
while True:
ret, frame = cam.read()
cv2.imshow(«test», frame)
if not ret:
break
k = cv2.waitKey(1)
if k%256 == 27:
# ESC pressed
print(«Escape hit, closing…»)
break
elif k%256 == 32:
# SPACE pressed
img_name = «opencv_frame_{}.png».format(img_counter)
cv2.imwrite(img_name, frame)
print(«{} written!».format(img_name))
img_counter += 1
cam.release()
cv2.destroyAllWindows()