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

标签 opencv matrix emgucv

我试图创建一个包含平板电脑行图像的大型矩阵,以便在 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/

相关文章:

C++:调整 Tesseract 以去除噪声元素

python - opencv imwrite中的色度子采样

python - 如何在重复数字的python中创建矩阵?

opencv - 如何检测图像处理中的背景变化?

c# - 剪切图像 EmguCV

c# - 检测图像中的圆形图案

c# - 带有 C# WPF 的 EMGU

image-processing - OpenCV 目标检测 - 中心点

c# - 如何使用朴素贝叶斯和主成分分析对文档进行分类(C#、Accord.NET)

c++ - 如何从文件中一个一个地读取矩阵元素