Как получить координаты всех синих пикселей с помощью matplotlib imread? - PullRequest
0 голосов
/ 05 апреля 2019

Я хотел бы добавить в список все синие пиксели изображения в формате JPEG, используя imshow matplolib.Когда я запускаю свой код, я не получаю результат кода RGB: 'массив ([89, 67, 28], dtype = uint8), массив ([51, 53, 16], dtype = uint8),' и т. Д.Что здесь не так?

import matplotlib.pyplot как plt import matplotlib.image как mpimg

control = mpimg.imread('jpeg.jpg')
ys = control.shape[0] #length of image
xs = control.shape[1] # image width
pixelcoords= []
for x in range(xs):
    for y in range(ys):
        # if pixel is blue
        pixelcoords.append(control[x][y])

print(pixelcoords)

1 Ответ

0 голосов
/ 05 апреля 2019

При чтении изображения вы получите массив значений (ширина x высота x [R, G, B, альфа]).

t = mpimg.imread("path/Test1.PNG")

теперь вы можете просто получить доступ к синему слою с помощьюбрать все по измерению ширины и высоты (обозначается ":") и только 3-е измерение из стека RGB, альфа.это дает вам двумерный массив, где каждый синий пиксель имеет ненулевое значение.чтобы найти все координаты ненулевых записей, вы можете использовать функцию np.nonzero, которая дает вам их координаты в виде массива X и Y

X,Y = np.nonzero(t[:,:,2])
...