Arhn - архитектура программирования

Как я могу прочитать ввод только части изображения, не создавая другое изображение?

import cv2

fname = '1.png'
img=cv2.imread(fname, 0)
print (img)//the outcome is an array of values from 0 to 255 (grayscale)
ret, thresh = cv2.threshold(img, 254, 255, cv2.THRESH_BINARY)
thresh = cv2.bitwise_not(thresh)
nums, labels = cv2.connectedComponents(thresh, None, 4, cv2.CV_32S)
dst = cv2.convertScaleAbs(255.0*labels/nums)
cv2.imwrite(dest_dir+"output.png", dst)

этот код работает просто отлично, поэтому я перешел к настройке своего кода, чтобы он мог брать часть изображения, а не все изображение:

from PIL import Image

    img = Image.open(fname)
    img2 = img.crop((int(xmin), int(yMin),int(xMax), int(yMax))

xmin ymin xmax ymax просто верхняя левая нижняя правая координата поля. затем я сделал img = cv2.imread(img2), чтобы продолжить как предыдущий код, но получил ошибку, я напечатал img2 и получил <PIL.Image.Image image mode=RGB size=54x10 at 0x7F4D283AFB70> как я могу настроить его, чтобы иметь возможность вводить эту обрезку или часть изображения вместо fname в моем коде выше, и обратите внимание, что я не Не хочу сохранять img2 как изображение и продолжать оттуда, потому что мне нужно работать с основным изображением.


  • Это именно то, что я сказал, что не хочу делать, пожалуйста, обратитесь к последней части моего вопроса. 14.06.2018
  • прости мой плохой 14.06.2018
  • Не беспокойтесь, спасибо за предложение и хотел бы услышать других, если у вас есть способ, который позволил бы мне предоставить этот раздел изображений в нужном мне формате. 14.06.2018

Ответы:


1

попробуйте cv2.imshow() вместо того, чтобы печатать его. Чтобы увидеть обрезанное изображение, вам нужно использовать функцию cv2. вот пример кода:

import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
14.06.2018
  • Спасибо, но моя главная цель - не видеть изображение, а вводить то, что я обрезал вместо fname в четвертой строке кода, которым я поделился в своем вопросе. 14.06.2018
  • у вас есть это обрезанное изображение в img2, что именно вы хотите с ним сделать? Вы можете объяснить это немного больше? 14.06.2018
  • Конечно, я обрезал интересующую область, затем я буду использовать эту интересующую область и применить к ней connected components, но к основному изображению, для которого я поделился кодом в своем вопросе, так что в случае, если обрезанный объект не сделан должным образом и есть еще подключенные пиксели, я смогу их получить, надеюсь, мой комментарий помог. 14.06.2018
  • нет, ты не можешь этого сделать. вам нужно будет сохранить это изображение и передать его cv2.imread() в качестве файловой переменной 14.06.2018
  • есть ли способ применить мой первый код к области изображения, а не к полному изображению? и простое сохранение мне не поможет, мне нужно поработать над основным изображением. 14.06.2018
  • проверьте, может ли это помочь opencv-python-tutroals .readthedocs.io/en/latest/py_tutorials/ 14.06.2018
  • docs.opencv.org/3.0-beta/doc/ py_tutorials/py_core/py_basic_ops/ 14.06.2018

  • 2

    Простой ответ: НЕТ, вы не можете.

    Откройте свой терминал /IDE и введите help(cv2.imread).

    В нем четко указано, что Функция imread загружает изображение из указанного файла и возвращает его. Поэтому, чтобы использовать cv2.imread(), вы должны передать его как файл, а не как изображение.

    Лучше всего сохранить обрезанное изображение в виде файла, а затем прочитать его.

    14.06.2018
  • да, я видел это и в документах imread opencv, но надеялся найти способ обойти это docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/ есть ли способ применить мой первый код к области изображения, а не к полному изображению? и простое сохранение мне не поможет, мне нужно поработать над основным изображением. 14.06.2018
  • у вас есть обрезанное изображение, почему бы просто не поработать над этим? 14.06.2018
  • потому что данные, которые у меня есть, плохие, и они плохо обрезаны, вот так просто, поэтому мне нужно проверить связанные компоненты с элементами, которые у меня уже есть в обрезанной части. 14.06.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..