我正在尝试获取2个Sobel输出的点积。
car_img = cv2.imread("car.png")
ix = cv2.Sobel(car_img, cv2.CV_64F, 1, 0, ksize = ksize, scale = scale)
iy = cv2.Sobel(car_img, cv2.CV_64F, 0, 1, ksize = ksize, scale = scale)
当我尝试使用他们的点积时:
np.dot(ix, iy)
我收到一条错误消息:
ValueError: shapes (240,320,3) and (240,320,3) not aligned: 3 (dim 2) != 320 (dim 1)
我在这里做错了什么?
答案 0 :(得分:1)
np.dot()
如果要处理二维数组,则会进行矩阵乘法。因此,您的代码正在尝试将两个m x n
矩阵相乘,这在m != n
时未定义。像np.dot(ix, np.transpose(iy))
之类的东西-也就是说,将ix
的{{3}}乘以矩阵iy
,例如,将定义 ,因为后者是n x m
矩阵。