将 cv::Mat A 的每个成员与 cv::Mat B 合并,以创建一个 cv::Mat C,结果为 [a(x,y),b(x,y)]

Merge every member of cv::Mat A with cv::Mat B in order to create a cv::Mat C with [a(x,y),b(x,y)] as a result

我正在尝试从另外两个矩阵生成 cv::Mat C,以便获得第三个矩阵,该矩阵由通过组合矩阵 A 和 B 的一维点生成的二维点构成。

我的问题是,我尝试的所有方法都只是连接矩阵,并没有真正将每个点与另一个点合并,这将导致 2-D 点的 3-D 矩阵。

有人可以帮我解决这个问题吗?

非常感谢。

更清楚一点:

我有 A = [(0, 1, 2),(3, 4, 5)]B=[(5, 4, 3),(2, 1, 0)],我想创建

 C = {[(0,5), (1,4), (2,3)],
      [(3,2), (4,1), (5,0)]}.

谢谢

您可以通过创建自定义类型矩阵来完成此操作。参见 here

基本上,您需要创建 DataType class 的特化来处理点(数据对)。

或者您可以使用 std::complex<double> 的给定矩阵而不是整数作为丑陋的快捷方式。文档中的示例代码:

Mat B = Mat_<std::complex<double> >(3, 3);

但是,此解决方案可能不是您一般问题的真正解决方案。 Google XY问题。