Emgucv C#图像稳定

时间:2016-05-12 13:38:28

标签: c# image-processing emgucv image-stabilization

我有两个连续的图像,我想在c#中使用EmguCv稳定。

我发现了很多关于如何执行图像稳定的信息,但是我找不到关于如何使用Emgu来稳定两个连续帧的详细解释(实际代码示例)。

一般来说,我知道我必须做以下事情:

  1. 使用GFTTDetector()计算第一帧的优良特征,并获取第一张图像的良好特征点(GFP1)。
  2. 然后我需要使用CvInvoke.CalcOpticalFlowPyrLK()计算光流以获得第二个图像(GFP2)的良好特征点。
  3. 使用GFP1& GFP2我可以使用CvInvoke.cvFindHomography()函数计算Homography矩阵。
  4. 最后我必须使用CvInvoke.cvWarpPerspective()来稳定框架。
  5. 基于以上所述,我试图进行图像稳定。

    我有两个连续的帧:

    Image<Gray, ushort> FirstImage = new Image<Gray, ushort>(Width, Height);
    Image<Gray, ushort> SecondImage= new Image<Gray, ushort>(Width, Height);
    

    我试图计算好的功能:

    Emgu.CV.Features2D.GFTTDetector _GFTTdetector = new Emgu.CV.Features2D.GFTTDetector(500,0.05);
    var GFP1 = _GFTTdetector.Detect(FirstImage);
    

    然而,当我调用.Detect时,我得到一个OpenCV异常,我无法继续:

      

    $ exception {“OpenCV:scn == 3 || scn == 4”} Emgu.CV.Util.CvException

    有人知道我为什么会遇到这个例外吗?

    此外,如果有人可以发布如何使用以下函数的示例代码,我将不胜感激,因为我不确定我将使用哪些输入参数:

    • CvInvoke.CalcOpticalFlowPyrLK()
    • CvInvoke.cvFindHomography()
    • CvInvoke.cvWarpPerspective()

    最后_GFTTdetector.Detect()返回KeyPoint []类型,但是CvInvoke.CalcOpticalFlowPyrLK()只接受优点的PointF []参数,那么我如何将KeyPoint []转换为PointF []?

0 个答案:

没有答案