Ваш код не работает, потому что 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