【问题标题】:Insert data in two channel matrix在两通道矩阵中插入数据
【发布时间】:2016-02-21 14:19:19
【问题描述】:

我是 OpenCV 及其开发的新手。我有两个通道矩阵

Mat alleigen( Size(3,3) , CV_32FC2) 

我有数据:

A=[1,2,3]

B=[4,5,6]

c=[7,8,9]

我想像M矩阵一样插入

M= [1 4 7
    2 5 8
    3 6 9]

如何在 OpenCV 中做到这一点?

【问题讨论】:

  • 为什么你的matrix 2通道? M 对我来说似乎是一个单通道矩阵。 ABC的哪些数据应该在第一通道或第二通道上?您确定要 2 维 矩阵,而不是 2 通道吗?
  • CV_32FC2 表示两个 32 位浮点通道
  • @Miki 如何在单通道矩阵中做任何想法?
  • @Miki 我想通过对列一循环和行一循环使用循环来做到这一点,我不想手动插入数据。我需要两个循环来插入这些值。有什么想法吗?

标签: c++ opencv


【解决方案1】:

您可能不想要一个 2 通道矩阵,而是一个简单的二维矩阵:

以下代码将产生所需的输出:

A:
[1, 2, 3]

B:
[4, 5, 6]

C:
[7, 8, 9]

M:
[1, 2, 3;
 4, 5, 6;
 7, 8, 9]

代码:

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main()
{
    Mat1f A = (Mat1f(1, 3) << 1, 2, 3);
    Mat1f B = (Mat1f(1, 3) << 4, 5, 6);
    Mat1f C = (Mat1f(1, 3) << 7, 8, 9);

    Mat1f M(3,3);

    A.copyTo(M.rowRange(0, 1));
    B.copyTo(M.rowRange(1, 2));
    C.copyTo(M.rowRange(2, 3));

    cout << "A: " << endl << A << endl << endl;
    cout << "B: " << endl << B << endl << endl;
    cout << "C: " << endl << C << endl << endl;
    cout << "M: " << endl << M << endl << endl;

    return 0;
}

【讨论】:

  • 我想使用像 for(int i=0;i
  • 如何声明矩阵 A、B 和 C?
  • 您只想用后续值声明 M 吗?或者你想用矩阵 A、B 和 C 的值填充它?
  • A 在代码 Mat 目的地(3, 3, CV_8UC1)中;有值。
  • 你能展示你目前拥有的代码吗?请将其编辑为问题,请
猜你喜欢
  • 2019-03-06
  • 2023-03-28
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多