用for循环遍历二值化图像可能吗?

时间:2019-04-29 13:45:46

标签: python numpy opencv image-processing binary

这是我的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 个答案:

答案 0 :(得分:3)

您的代码不起作用,因为threshold()返回两个值的元组:您设置的阈值(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