Хобрук: Ваш путь к мастерству в программировании

Извлечение патча из изображения с заданным центром патча и масштабом патча

У меня есть изображение размером 1200 x 800.

Я хочу извлечь квадратную заплатку из этого изображения с учетом центра заплаты 500, 450 и масштаба заплаты 23% меньшего размера изображения.

Есть ли какая-нибудь функция в opencv, skimage или в любой библиотеке, которая позволяет мне сделать это в python?


  • Да. Это простая и распространенная операция, и вы можете сделать это в OpenCV, skimage, а также в PIL и чистом numpy. Вы должны выбрать библиотеку, которую хотите использовать (вероятно, на основе других критериев, поскольку все они могут это сделать), попытаться сделать это с помощью любого выбранного вами инструмента, а затем задать вопрос, если у вас возникнут проблемы с этим (что вы, вероятно, победите). т). 12.08.2015
  • Подсказка: 23% меньшего размера составляет 0,23 * 800. Верхний левый угол прямоугольника равен (center_x - ширина/2, center_y - высота/2). Для квадратного патча ширина = высота. 12.08.2015
  • Может быть, это простой вопрос, но он не заслуживает отрицательного голосования... 20.03.2016

Ответы:


1

Используя OpenCV python, вы можете сделать это:

import cv2
import numpy as np

# load the image
image = cv2.imread('path/to/your_image.jpg')

# define some values
patch_center = np.array([500, 450])
patch_scale = 0.23

# calc patch position and extract the patch
smaller_dim = np.min(image.shape[0:2])
patch_size = int(patch_scale * smaller_dim)
patch_x = int(patch_center[0] - patch_size / 2.)
patch_y = int(patch_center[1] - patch_size / 2.)
patch_image = image[patch_x:patch_x+patch_size, patch_y:patch_y+patch_size]

# show image and patch
cv2.imshow('image', image)
cv2.imshow('patch_image', patch_image)
cv2.waitKey()

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

13.08.2015
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..