Изучение обработки изображений: горизонтальная и вертикальная ориентация

Обработка изображений – это увлекательная область, которая включает в себя манипулирование и анализ цифровых изображений для извлечения полезной информации или улучшения визуальных функций. Одним из распространенных аспектов обработки изображений является определение того, находится ли изображение в горизонтальной или вертикальной ориентации. В этой статье мы рассмотрим различные методы выполнения этой задачи, сопровождаемые примерами кода на Python.

Метод 1: обнаружение краев
Обнаружение краев — это популярный метод обработки изображений, который помогает определить границы между различными объектами или областями внутри изображения. Анализируя края, мы можем определить ориентацию изображения. В качестве примера воспользуемся алгоритмом обнаружения границ Канни:

import cv2
def detect_orientation(image_path):
    img = cv2.imread(image_path, 0)
    edges = cv2.Canny(img, 50, 150)
    height, width = edges.shape
    if width > height:
        print("Image is horizontal")
    else:
        print("Image is vertical")
# Usage
detect_orientation("image.jpg")

Метод 2: Контурный анализ
Контурный анализ — еще один мощный метод, используемый при обработке изображений. Он включает в себя выявление и анализ контуров или кривых на изображении. Изучая форму контуров, мы можем определить ориентацию изображения. Вот пример использования OpenCV:

import cv2
def detect_orientation(image_path):
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    _, threshold = cv2.threshold(gray, 127, 255, 0)
    contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    x, y, width, height = cv2.boundingRect(contours[0])
    if width > height:
        print("Image is horizontal")
    else:
        print("Image is vertical")
# Usage
detect_orientation("image.jpg")

Метод 3: анализ размеров
Альтернативный подход к определению ориентации изображения — анализ размеров изображения. Сравнивая ширину и высоту, мы можем сделать вывод, является ли изображение горизонтальным или вертикальным. Вот пример:

from PIL import Image
def detect_orientation(image_path):
    img = Image.open(image_path)
    width, height = img.size
    if width > height:
        print("Image is horizontal")
    else:
        print("Image is vertical")
# Usage
detect_orientation("image.jpg")

В этой статье мы рассмотрели различные методы определения ориентации изображения. Мы продемонстрировали три подхода: обнаружение краев, анализ контуров и анализ размеров. Используя эти методы, вы можете точно определить, является ли изображение горизонтальным или вертикальным. Имейте в виду, что разные методы могут давать разные результаты в зависимости от содержания и качества изображения. Для достижения оптимальных результатов могут потребоваться эксперименты и точная настройка.