gpt4 book ai didi

c# - 如何在 OpenCvSharp 库中打印矩阵值

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:02 26 4
gpt4 key购买 nike

我正在尝试使用 Cv2.FindHomography 方法查找两个源的单应矩阵。到这里为止一切正常。问题是我无法获取/打印矩阵值。我真的是 C# 的初级水平。我找到了一种 documentation属于它。但是,我不明白如何迭代这些值。

this[int startCol, int endCol]
override MatExpr OpenCvSharp.Mat.ColExprIndexer.this[int startCol, int endCol]
getset
Creates a matrix header for the specified column span.

Parameters
startCol An inclusive 0-based start index of the column span.
endCol An exclusive 0-based ending index of the column span.
Returns

我的代码,

Point2d[] points1 = new Point2d[]
{
new Point2d(141, 131), new Point2d(480, 159)
};
Point2d[] points2 = new Point2d[]
{
new Point2d(318, 256),
new Point2d(5, 1)
};

Mat hCv = Cv2.FindHomography(points1, points2);
// I want to print the the resultant matrix

最佳答案

第一种方法是使用 Data方法。

byte[] data = new byte[hCv.Width * hCv.Height];
Marshal.Copy(hCv.DataPointer, data, 0, hCv.Width * hCv.Height);

for(int i = 0; i < data.Length; i++)
{
// Print data[i]
}

类型取决于矩阵的类型,如果它是 CV_8 , 然后使用 byte , 如果是 CV_32 , 使用 float


根据 this - 另一种方法是创建图像或矩阵(附加副本),然后访问每个元素

Image<Bgr, Byte> img = hCv.ToImage<Bgr, Byte>();

然后可以使用 Image<,>.Data 访问像素数据属性(property)。

您还可以将 Mat 转换为 Matrix<> 对象。假设 Mat 包含 8 位数据

Matrix<Byte> matrix = new Matrix<Byte>(hCv.Rows, hCv.Cols, mat.NumberOfChannels);
hCv.CopyTo(matrix);

然后可以使用 Matrix<>.Data 访问像素数据属性(property)。

关于c# - 如何在 OpenCvSharp 库中打印矩阵值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53913627/

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