问题描述
Python:我想创建一个条件来检查二进制图像数组并从中心找到零行。如果中心没有零行,则打印语句“零行不可用”...!
Array= [[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
[255 255 255 255 0 0 0 0 0 0 255 255]]
我尝试过的:
img = np.array(img)
moment = cv2.moments(img)
X = int(moment ["m10"] / moment["m00"])
Y = int(moment ["m01"] / moment["m00"])
print(X,Y)
u = X,Y
imagesE = cv2.findNonZero(u)
print(imagesE)
这些是零行。我想通过条件从数组的中心找到这些零行...!
[[
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]
然后我简单地使用布尔运算符“!”与cv2.findNonZero
。但是没有找到require输出。
解决方法
我不知道什么是“中心零行”,但是您可以通过以下方式获得所有行的总和:
rowSums = np.sum(array,axis=1)