cv::Mat kpts3d_cam = object_points_mat * rmat.t() + tvec.t();报错OpenCV(3.4.10) Error: Assertion failed (type == B.type(), (type == (((5) & ((1 << 3) - 1)) + (((1)-1) << 3)) || type == (((6) & ((1 << 3) - 1)) + (((1)-1) << 3)) || type == (((5) & ((1 << 3) - 1)) + (((2)-1) << 3)) || type == (((6) & ((1 << 3) - 1)) + (((2)-1) << 3)))) in cv::gemm, file C:\build\3_4_winpack-build-win64-vc15\opencv\modules\core\src\matmul.dispatch.cpp, line 337
时间: 2023-08-20 16:05:17 浏览: 126
电子技术专业采购设备.pdf
这个错误是由于矩阵的类型不一致导致的。根据错误信息,很可能是矩阵`object_points_mat`和矩阵`rmat.t()`的类型不一致导致的。
您可以通过以下代码检查矩阵的类型是否匹配:
```
std::cout << "object_points_mat type: " << object_points_mat.type() << std::endl;
std::cout << "rmat.t() type: " << rmat.t().type() << std::endl;
```
如果矩阵类型不匹配,可以使用以下代码将矩阵类型转换为匹配的类型:
```
object_points_mat.convertTo(object_points_mat, CV_64FC1);
rmat.t().convertTo(rmat.t(), CV_64FC1);
```
或者,您可以在矩阵乘法之前使用`cv::Mat::reshape()`函数将矩阵类型转换为匹配的类型:
```
object_points_mat = object_points_mat.reshape(1);
rmat.t() = rmat.t().reshape(1);
```
如果您的矩阵类型已经匹配,那么您可能需要检查矩阵的维度是否正确。如果您需要更具体的帮助,请提供更多的代码和上下文信息。
阅读全文