Не могу ли я проверить полное или заданное значение c пикселей массива изображения в cv2.imshow ()? - PullRequest
1 голос
/ 13 января 2020

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

Когда я нажимаю на изображение в imshow, я сразу вижу координаты и значения пикселей в координатах, но я не знаю, как проверить значения при переключении на Python .

Я не могу щелкнуть изображение, я не вижу массив ...

Я слышал, что вы часто используете Python для обработки изображений, поэтому я пытаюсь изучить , но это кажется более неудобным, чем MATLAB. Я думаю, это потому, что я пока не знаю, как использовать Python.

Ответы [ 2 ]

1 голос
/ 13 января 2020

Вы можете использовать cv2, чтобы прочитать его - imread() - отобразить его и увидеть координаты и цвет - imshow () `- или отобразить и выбрать c region - selectROI () - который вы хотите получить в виде массива ,

Единственная проблема заключается в том, что изображение сохраняется как BGR, а не как RGB, поэтому вам нужно преобразовать его, когда вы захотите использовать его с другими модулями, такими как Matplotlib, imageio, PIL / pillow или любой GUI каркас.


Внизу показаны координаты пикселей и цвет.

Сверху есть кнопки для прокрутки, масштабирования и т. Д. c. но на моем компьютере не отображаются значки на кнопках.

enter image description here

enter image description here

I используется imageio для считывания изображения непосредственно из inte rnet

import cv2
import imageio

img = imageio.imread('https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png?download')
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
#img = cv2.imread('lenna.png')

cv2.imshow('window', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Используя selectROI или selectROIs, вы можете выбрать регион (ы) в окне, нажмите Space или Enter и вы можете получить его как массив

enter image description here

import cv2
import imageio

img = imageio.imread('https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png?download')
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
#img = cv2.imread('lenna.png')

region = cv2.selectROI('window', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

x,y,w,h = region
new_img = img[y:y+h,x:x+w]

cv2.imshow('window', new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
1 голос
/ 13 января 2020

Используйте Matplotlib тогда, если вы хотите, чтобы MATLAB выглядел еще немного. Вот небольшой пример, включающий OpenCV для чтения изображений:

import cv2
from matplotlib import pyplot as plt

# Read image via OpenCV
img = cv2.imread('path/to/your/image.png')

# Attention: OpenCV uses BGR color ordering per default whereas
# Matplotlib assumes RGB color ordering!
plt.figure(1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

Вот скриншот получившегося окна (Windows 10):

Screenshot

Взгляните на правый нижний угол. Вы не можете видеть курсор на скриншоте, но он установлен в верхнем левом углу шляпы (x = 120, y = 5), и значение RGB правильно указывает (главным образом) на красный цвет.

В общем: выполните поиск по запросу "Python для пользователей MATLAB"! На этом есть множество учебников!

Надеюсь, это поможет!

-----------------------
System information
-----------------------
Python:      3.8.1
Matplotlib:  3.2.0rc1
OpenCV:      4.1.2
-----------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...