OpenCV (Open Source Computer Vision) – это популярная библиотека с открытым исходным кодом для задач компьютерного зрения и обработки изображений. Он предоставляет широкий спектр функций и алгоритмов, которые позволяют разработчикам манипулировать, анализировать и извлекать ценную информацию из изображений и видео. В этой статье блога мы рассмотрим различные методы и примеры кода, использующие OpenCV для задач обработки изображений.
-
Загрузка и отображение изображений:
import cv2 # Load an image from file image = cv2.imread('image.jpg') # Display the image cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows() -
Фильтрация изображений:
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() -
Распознавание контуров:
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() -
Извлечение функций:
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() -
Обнаружение краев:
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() -
Сегментация изображения:
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 и создавать инновационные приложения компьютерного зрения.