Возможно ли выполнить итерацию для цикла for через двоичное изображение? - PullRequest
0 голосов
/ 29 апреля 2019

это мой код Python:

import cv2
img = cv2.imread("foo.jpg")

#here I can iterate trough each pixel since I have a 2D array
for x in range(img.shape[0]):
    for y in range(img.shape[1]):
    pass #maipulate each pixel

gary = cv2.cvtColor(img, COLOR_BGR2GRAY)
bin = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)

#here I can not iterate trough each pixel since I have a 1D array
for x in range(img.shape[0]):
    for y in range(img.shape[1]):
        pass

Мой вопрос: Как я могу перебирать каждый пиксель двоичного изображения?Я хочу использовать алгоритм поиска скользящего окна.

1 Ответ

3 голосов
/ 29 апреля 2019

Ваш код не работает, потому что threshold() возвращает кортеж из 2 значений: установленное вами пороговое значение (127) и двоичное изображение. Если вы разделите их, вы можете использовать один и тот же двойной цикл для доступа к каждому значению / пикселю.
Я изменил ваш код, так как там, где также есть несколько опечаток.

import cv2
img = cv2.imread("foo.jpg")

#here I can iterate trough each pixel since I have a 2D array
for x in range(img.shape[0]):
    for y in range(img.shape[1]):
    pass #maipulate each pixel

gray= cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh, bin_img = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)

for x in range(bin_img.shape[0]):
    for y in range(bin_img.shape[1]):
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...