如果预期的输入始终是条纹图案,您可以逐行遍历像素。当一个像素与前一个不同时,请注意相等的像素数。
我创建了一个示例,其中我使用了原始图像的一小部分 - 为了清楚起见。
输入:
结果:
[[6, 10, 8, 10, 8, 8],
[6,10,8,10,8,8],
[6,10,8,10,8,8],
[7, 9, 8, 10, 8, 8],
[7、9、8、10、8、8]]
代码:
import cv2
# load image as grayscale
img = cv2.imread('YDsdI.png',0)
# create small subimage
subimg = img[100:105,95:150]
# create empty list
all_distances = []
# loop all lines, then each pixel
# if the current pixel differs from the previous,
# then append the number of pixel that where equal
for line in subimg:
start = 0
line_distances = []
for i in range(1,len(line)):
if line[i] != line[i-1]:
line_distances.append(i-start)
start = i
all_distances.append(line_distances)
# print result
print(all_distances)
# draw gray rectangle around the smaller subimage
cv2.rectangle(img,(95,100),(150,105),(127),2)
# show image
cv2.imshow('Img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()