OpenCV: 9 общих функций, которые вы должны знать
Сегодня ИИ – это не просто модный термин, а влиятельная сила, меняющая наш мир. Одним из аспектов ИИ, который привлек наше общее внимание, является компьютерное зрение, подпитываемое интригующим миром глубокого обучения.
Представьте себе мир, в котором машины могут “видеть”, интерпретировать и взаимодействовать с визуальной средой так же, как люди – захватывающе, не правда ли? Это уже не научная фантастика, а вполне достижимая реальность, и она всколыхнула такие отрасли, как автономные транспортные средства и системы распознавания лиц, медицинская визуализация и другие.
Давайте окунемся с головой в эту захватывающую сферу, вооружившись могучим инструментом – OpenCV (Open Source Computer Vision Library). Известная своей эффективностью в компьютерном зрении в реальном времени, OpenCV служит нам ключом к раскрытию завораживающих возможностей компьютерного зрения.
С его обширным набором функций, он может показаться пугающим на первый взгляд, но не бойтесь! Вот наиболее распространенные функции OpenCV, которые необходимо знать, чтобы ориентироваться в мире обработки изображений и компьютерного зрения.
1. imread() and imwrite()
# Read image
img = cv2.imread('image.jpg')
# Save an image
cv2.imwrite('new_image.jpg', img)
Эти две функции являются наиболее фундаментальными: Чтение изображения и запись изображения.
2. cvtColor()
# Grayscaling an image
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Эта функция используется для преобразования изображения из одного цветового пространства в другое, например, из BGR в градации серого или из BGR в HSV.
3. resize()
# Resizing an image
resized_img = cv2.resize(img, (300, 300)) # 300x300
Часто возникает необходимость изменить размер изображений до определенного размера, и функция изменения размера оказывается как нельзя кстати.
4. blur()
# Blurring an image
blurred_img = cv2.GaussianBlur(img, (5, 5), 0)
Эта функция используется для размытия изображения с помощью различных методов, таких как усреднение, гауссово размытие, медианное размытие и т.д.
Это особенно полезно при подавлении шума.
5. Canny()
# Apply Canny edge detection
edges = cv2.Canny(img, 100, 200)
Функция Канни используется для определения краев, что является важной частью обработки изображений и приложений компьютерного зрения.
6. imshow() and waitKey()
# Show image
cv2.imshow('Image', img)
# Wait until a key is being pressed
cv2.waitKey(0)
Функция imshow() выводит изображение в окно, а waitKey() используется для обработки событий.
Аргументом waitKey является время в миллисекундах. Функция ожидает в течение указанных миллисекунд любого события, связанного с клавиатурой.
7. threshold()
# Apply thresholding
ret, thresh = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
Пороговая обработка – это простой, но эффективный метод сегментации изображений. Он используется для создания бинарных изображений из полутоновых.
8. findContours() and drawContours()
# Find contours
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# Draw contours
contoured_img = cv2.drawContours(img, contours, -1, (0,255,0), 3)
Контуры – это просто границы объектов.
Функция findContours() используется для обнаружения контуров, а функция drawContours() – для рисования контуров.
9. VideoCapture() and VideoWriter()
# Capture video from the webcam
cap = cv2.VideoCapture(0)
# Write video to a file
out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'MJPG'), 20.0, (640,480))
Эти функции используются для захвата видео с камеры или чтения из файла (VideoCapture) и записи видео (VideoWriter).
Заключение
В общем и целом, OpenCV – это мощный инструмент для обработки изображений, и рассмотренные выше функции лишь поверхностны. Но это самые распространенные из них, и знание их даст вам прочную основу.
Большинство из нас, около 90%, не запомнят все функции мгновенно, и это совершенно нормально.
Поиск синтаксиса – это часть процесса, главное – понять, какие инструменты вам доступны и когда их использовать.