如何制作检查二进制图像数组并从中心找到零行的条件?

问题描述

Python:我想创建一个条件来检查二进制图像数组并从中心找到零行。如果中心没有零行,则打印语句“零行不可用”...!

图片Image

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)