我无法弄清楚如何使用这两个数组以便我可以计算每个数组的这些非零元素?
以下是我的代码:
from PIL import Image
import numpy as np
Image = Image.open('myimage.jpg')
array = np.array(Image)
split = np.split(array,2,0) //code is working fine until this point
答案 0 :(得分:1)
当你使用np.split(array, 2, 0)
时,你将它垂直分成两个数组,这样你就可以得到上半部分和下半部分。您希望沿轴1
拆分以左右移动:np.split(array, 2, 1)
。
其次,如果你分成两个,np.split
会返回两个数组,并且它们存储在一个列表中。如果您想要第一个,请使用split[0]
,如果您想要第二个,请使用split[1]
,或者如果您想立即解压缩它们:
left, right = np.split(array, 2, 1)
现在,要计算非零元素,你必须更仔细地定义“元素”,因为jpg图像每个像素有三个元素。如果你想要元素,只需使用:
lcount = np.count_nonzero(left)
如果你想要像素,你必须以某种方式转换为灰度。这是一种方式:
grey = np.asarray(im.convert('L'))
lgray, rgray = np.split(grey, 2, 1)
lcount = np.count_nonzero(lgrey)
我也会稍微改写一下,因为你不想使用Image
,因为那已经是PIL
模块的名称了:
from PIL import Image
import numpy as np
im = Image.open('myimage.jpg') # don't name something Image, the module is Image.
arr = np.array(im)
left, right = np.split(arr, 2, 1)