gpt4 book ai didi

opencv - 在 Emgucv 或 Opencv 中将多个一维矩阵复制到一个大的一维矩阵中

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:25 24 4
gpt4 key购买 nike

我试图创建一个包含平板电脑行图像的大型矩阵,以便在 Emgucv 中使用 PCA 函数。我成功地将平板电脑图像(比如 MxN) reshape 为矩阵(1 行,MxN 列)。现在我想将它复制到大矩阵的第 i 行(k 行,MxN 列)。这是我的代码:

        Matrix<byte> largeMatrix= new  Matrix<byte> (k,M*N);
Matrix<byte> temp = new Matrix<byte>(M,N); //tablet image
Matrix<byte> temp1 = new Matrix<byte>(1,M*N); //tablet image after reshaping into 1 row

CvInvoke.cvConvert(src.Copy(),temp);
CvInvoke.cvReshape(temp, temp1, 0, 1);
//Written in C# using Emgucv

如何在 Emgucv(或 Opencv)中将 temp1 精确复制到矩阵 largeMatrix 的第 i 行。

最佳答案

这很简单。抱歉,我只有 C++ 代码给你。

cv::Mat dest; // size NxM (rowsxcols)
cv::Mat src; // size N
cv::Mat row(dest.row(i));
src.copyTo(row);

现在这里发生了什么?Mat row 是一个矩阵头,它正好包裹了 dest 的行 i。它不会创建副本,而只是提供相同数据的不同 View 。然后,copyTo() 方法实际复制两个矩阵之间的数据。

这里重要的是不要写row = src。这只会改变 row 的标题,而不是它指向的数据。

关于opencv - 在 Emgucv 或 Opencv 中将多个一维矩阵复制到一个大的一维矩阵中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com