gpt4 book ai didi

c# - C#Emgu:使用DISOpticalFlow

转载 作者:行者123 更新时间:2023-12-02 17:40:41 27 4
gpt4 key购买 nike

今天是个好日子,

我正在尝试为视频构建实时帧插值程序。
因为我一直使用C#,所以我选择将OpenCV与Emgu 3.2.0(可用的最新版本)一起使用。

就是这样:

首先,我有2张分别名为frame1和frame2的图像,这显然是我的视频中的两帧。

接下来,我按如下方式构建DISOpticalFlow对象

现在,我必须使用它来获取这两个帧之间的转换 vector 。

因此,我建立了一个名为flow的灰度图像,并使用DISOpticalFlow的calc方法。

Aaaaand ...没事。无论我尝试什么,流程总是空的(请参阅此屏幕:http://imgur.com/ozN0XgN)

我想念什么或做错什么?

感谢大家阅读并度过愉快的一天!

代码:

//My items
Image<Bgr, Byte> frame1 = new Image<Bgr, Byte>(1280, 720);
Image<Bgr, Byte> frame2 = new Image<Bgr, Byte>(1280, 720);
DISOpticalFlow opticalFlowAlgorithm = new DISOpticalFlow(DISOpticalFlow.Preset.Medium);
Image<Gray, Byte> flow= new Image<Gray, Byte>(1280, 720);


//Get my frame from my server
//Note : this is working without any problem, if I display those frames with CvInvoke.Imshow, everything is good
server.waitFrame.WaitOne();
frame1.Bytes = server.frame1;
server.waitFrame.WaitOne();
frame1.Bytes = server.frame1;

//Now I get my optical flow :
opticalFlowAlgorithm.Calc(frame1.Convert<Gray, byte>(), frame2.Convert<Gray, byte>(), flow);

最佳答案

我不是EmguCV专家,但是如果我没记错的话,Image只能存储整数值。
如果将“流”定义为Image,则将丢失信息,因为DISOpticalFlow应该返回一个浮点矩阵。

在opencv c++中,我声明了如下的流矩阵

 Mat_<Point2f> flow;

然后通过将流的大小和方向映射到色彩空间将其转换为图像。

关于c# - C#Emgu:使用DISOpticalFlow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45387997/

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