2016-06-05 3 views
1

Я импортировал цветное изображение с помощью функции openCV imread.Как получить индексы пикселей определенного значения RGB изображения в python?

im = cv2.imread('test.jpg') 

Я ищу, чтобы найти индексы белых пикселей, которые имеют значение в пикселях [255, 255, 255]. Я знаю, что im - это 3D-массив. Но странно, что значение im [0,0] - [255 255 255], а не [255, 255, 255]. И im [0,0,0] - 255. Таким образом, [255 255 255] кажется списком или чем-то, но на самом деле не эквивалентен [255, 255, 255].

>>> print im[0,0] 
[255 255 255] 

>>> print im[0,0,0] 
255 

Так что мои вопросы:

  1. В чем разница между [255 255 255] и [255, 255, 255]?
  2. Как я могу получить индексы всех пикселов withe? Какой алгоритм поиска я должен использовать?
+0

В C++ вы использовали бы 'cv :: findNonZero' на маске белых пикселей:' cv :: Mat1b mask; cv :: inRange (img, cv :: Scalar (255,255,255), cv :: Scalar (255,255,255), маска); std :: vector pts; cv :: findNonZero (маска, pts); '. В оболочках Python должно быть что-то подобное. Или, возможно, некоторые шутеры с использованием средств Numpy ... – Miki

ответ

0

Если вы хотите, чтобы получить индексы всех белых пикселей, вы можете преобразовать изображение в 2D-массив, а затем найти индексы

import operator 

image = cv2.imread("test.jpg") 
img = image.astype('float') 
img = img[:,:,0] # convert to 2D array 
row, col = img.shape 
for i in range(row): 
    for j in range(col): 
     if img[i,j] == 255: 
      x.append(i) # get x indices 
      y.append(j) # get y indices 

Обратите внимание, что изображения [0,0] показывает 2D матрицы тогда как изображение [0,0,0] показывает трехмерную матрицу с 0-цветной полосой. Этот элемент в основном определяет цветовую полосу изображения. Если вы не укажете третий элемент, он отобразит три значения для каждой цветовой полосы изображения. Но когда вы укажете цветную группу, она покажет вам точное значение пикселя.

ПРИМЕЧАНИЕ: Нет необходимости преобразовывать изображение в 2D-массив. вы всегда можете сделать это и для реального массива. Я сделал это, чтобы просто объяснить вам алгоритм.

Смежные вопросы