【问题标题】:How to reset MatrixBox in EmguCv using winforms如何使用 winforms 在 EmguCv 中重置 MatrixBox
【发布时间】:2018-07-13 19:33:11
【问题描述】:

我一直无法从 Emgu.CV.UI 中找到很多正确使用 MatrixBox 的文档。

我正在使用 EmguCV 3.4.1 版,我想使用 MatrixBox 显示我正在流式传输的视频中像素值的实时更新。

Winforms Matrixbox Control

    private void BufferReceiver_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        Matrix<UInt16> matrix = new Matrix<UInt16>(mat.Rows, mat.Cols, mat.NumberOfChannels);
        Matrix<UInt16> subMatrix = matrix.GetSubRect(new Rectangle(0, 0, 10, 10));

        matrixBox1.Matrix = subMatrix;
        matrixBox1.Refresh();
    }

我能够显示像素值的 10x10 矩阵,但是当再次执行上述方法时,矩阵会增长到 20x20,但会用更新后的值替换 10x10 矩阵。

First Run

Second Run

我可以从 OpenCv 源代码中看到 MatrixBox 只是在更新 DataGridView,但我找不到在更新值之前清除 MatrixBox 的方法。

【问题讨论】:

    标签: c# winforms emgucv


    【解决方案1】:

    你可以试试

        Size sz = matrixBox1.Size;
        Point lc = matrixBox1.Location;
        int ti = matrixBox1.TabIndex;
        matrixBox1.Dispose();
        matrixBox1 = New Emgu.CV.UI.MatrixBox;
        matrixBox1.Parent = this;
        matrixBox1.Location = lc;
        matrixBox1.Matrix = Nothing;
        matrixBox1.Name = "MatrixBox1";
        matrixBox1.Size = sz;
        matrixBox1.TabIndex = ti;
    
        matrixBox1.Matrix = subMatrix;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 2016-07-14
      • 1970-01-01
      • 2010-10-26
      • 2021-03-08
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      相关资源
      最近更新 更多