【发布时间】:2015-07-29 02:23:57
【问题描述】:
所以我一直在做一个项目,但一直停留在一个步骤上。我正在使用一系列 for 循环在另一个更大的矩阵上迭代一个矩阵。我的整个代码一直运行到最后一步,它给了我一个 ValueError,说 ValueError: operands could not be broadcast together with shapes (5,4) (5,5)
我知道这是因为矩阵的大小不同 - 我认为错误出在我的填充中。有人可以看看这个并告诉我我的错误吗?想弄清楚这一点我快疯了。
def haar_feature_generator(image_array, haar_matrices_list):
rows, columns = image_array.shape
output_matrix = numpy.zeros((rows, columns))
numpy.pad(output_matrix, (4,4), 'constant', constant_values=0)
for y in range(0, rows):
for x in range(0, columns):
for haar_matrix in haar_matrices_list:
rows_1, columns_1 = haar_matrix.shape
output_matrix[y, x] = numpy.multiply((image_array[y:(y + rows_1) , x:(x + columns_1)]), haar_matrix).sum()
output_array = numpy.asarray(abs(output_matrix))
return output_array
hm_list_1 = ([numpy.matrix('1,1;-1,-1'), numpy.matrix('1,1,1 ; 1,1,-1 ; 1,-1,-1'), numpy.matrix('-1,-1,-1 ; -1,1,1 ; 1,1,1')])
hm_list_2 = ([numpy.matrix('1,1,1 ; 1,1,-1 ; -1,-1,-1'), numpy.matrix('-1,-1,-1 ; -1,-1,-1 ; 1,1,1')])
hm_list_3 = ([numpy.matrix('1,1,1,1 ; 1,1,1,1 ; 1,1,1,-1 ; -1,-1,-1,-1'), numpy.matrix('1,1,1,1 ; 1,1,-1,-1 ; -1,-1,-1,-1 ; -1,-1,-1,-1')])
hm_list_4 = ([numpy.matrix('1,1,1,1 ; 1,-1,-1,-1 ; 1,1,1,-1 ; -1,-1,-1,-1'), numpy.matrix('1,1,1,-1 ; 1,1,-1,-1 ; 1,-1,-1,-1 ; -1,-1,-1,-1')])
hm_list_5 = ([numpy.matrix('1,1,1,1,1 ; 1,1,-1,-1,-1 ; 1,1,1,-1,-1 ; 1,1,1,1,-1 ; -1,-1,-1,-1,-1')])
haar_matrices_list = hm_list_1 + hm_list_2 + hm_list_3 + hm_list_4 + hm_list_5
haar_feature_generator(image_array, haar_matrices_list)
【问题讨论】: