rror: (-215:Assertion failed) type == B.type() in function 'cv::gemm'

用的站内的,出这个问题,搜了说是格式不匹配也不知道有哪些要改

引用 皆我百晓生 小程序回复内容作答:
这个错误通常是由于矩阵类型不匹配引起的。当你使用 OpenCV 的 gemm 函数时,输入的矩阵必须具有相同的类型。

要解决这个问题,你可以尝试以下几个步骤:

  1. 确保你输入的两个矩阵具有相同的类型。你可以使用 cv2.imread() 函数加载图像时指定 cv2.IMREAD_UNCHANGED 参数来保留原始的图像类型。
img1 = cv2.imread('image1.jpg', cv2.IMREAD_UNCHANGED)
img2 = cv2.imread('image2.jpg', cv2.IMREAD_UNCHANGED)
  1. 如果你手动创建了矩阵,确保它们具有相同的类型。你可以使用 np.array() 函数指定 dtype 参数来设置矩阵的数据类型。
matrix1 = np.array([[1, 2], [3, 4]], dtype=np.float32)
matrix2 = np.array([[5, 6], [7, 8]], dtype=np.float32)
  1. 检查 gemm 函数的参数是否正确,并确保矩阵的维度与期望的相同。你可以通过打印矩阵的形状来检查。
print(img1.shape)
print(img2.shape)
print(matrix1.shape)
print(matrix2.shape)
  1. 如果以上步骤都没有解决问题,可能是因为输入矩阵的维度不匹配。你可以尝试使用 cv2.transpose() 或 NumPy 的数组转置来调整矩阵的维度。
img2 = cv2.transpose(img2)

希望这些步骤能帮助你解决 gemm 函数的错误。如果问题仍然存在,请提供更多的代码和错误信息,以便我能更好地帮助你。