Освоение обработки изображений с помощью OpenCV: подробное руководство по основным методам и примерам кода

OpenCV (Open Source Computer Vision) – это популярная библиотека с открытым исходным кодом для задач компьютерного зрения и обработки изображений. Он предоставляет широкий спектр функций и алгоритмов, которые позволяют разработчикам манипулировать, анализировать и извлекать ценную информацию из изображений и видео. В этой статье блога мы рассмотрим различные методы и примеры кода, использующие OpenCV для задач обработки изображений.

  1. Загрузка и отображение изображений:

    import cv2
    # Load an image from file
    image = cv2.imread('image.jpg')
    # Display the image
    cv2.imshow('Image', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  2. Фильтрация изображений:

    import cv2
    import numpy as np
    # Load an image
    image = cv2.imread('image.jpg')
    # Apply Gaussian blur
    blurred = cv2.GaussianBlur(image, (5, 5), 0)
    # Apply median blur
    blurred = cv2.medianBlur(image, 5)
    # Apply custom kernel convolution
    kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
    filtered = cv2.filter2D(image, -1, kernel)
    # Display the results
    cv2.imshow('Original', image)
    cv2.imshow('Blurred', blurred)
    cv2.imshow('Filtered', filtered)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  3. Распознавание контуров:

    import cv2
    # Load an image
    image = cv2.imread('image.jpg')
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # Apply thresholding
    _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
    # Find contours
    contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    # Draw contours on the image
    cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
    # Display the result
    cv2.imshow('Contours', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  4. Извлечение функций:

    import cv2
    # Load an image
    image = cv2.imread('image.jpg')
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # Create a feature detector
    detector = cv2.FeatureDetector_create("SIFT")
    # Detect keypoints
    keypoints = detector.detect(gray)
    # Draw keypoints on the image
    image_with_keypoints = cv2.drawKeypoints(image, keypoints, None)
    # Display the result
    cv2.imshow('Image with Keypoints', image_with_keypoints)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  5. Обнаружение краев:

    import cv2
    # Load an image
    image = cv2.imread('image.jpg')
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # Apply Canny edge detection
    edges = cv2.Canny(gray, 100, 200)
    # Display the result
    cv2.imshow('Edges', edges)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  6. Сегментация изображения:

    import cv2
    # Load an image
    image = cv2.imread('image.jpg')
    # Convert to grayscale
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # Apply thresholding
    _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
    # Find connected components
    _, labels = cv2.connectedComponents(threshold)
    # Create a random color map
    colors = np.random.randint(0, 255, size=(labels.max() + 1, 3), dtype=np.uint8)
    # Apply color map to the labels
    colored_labels = colors[labels]
    # Display the result
    cv2.imshow('Segmented Image', colored_labels)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

OpenCV предоставляет мощный арсенал методов и функций для задач обработки изображений. В этой статье мы рассмотрели различные методы, включая загрузку и отображение изображений, фильтрацию, обнаружение контуров, извлечение признаков, обнаружение краев и сегментацию изображения. Используя эти методы и примеры кода, разработчики могут раскрыть весь потенциал OpenCV и создавать инновационные приложения компьютерного зрения.