我现在用一个视频分析软件分析路况视频,分析软件能够给出视频里每一帧中物体的位置信息,即给出能包含这个物体的方框的坐标和长宽信息,我要实现的功能就是让这个框随视频帧变化即动态跟踪这个物体。
  我的做法是取出视频帧,画上框,然后再画上图像,代码是这样的                singleTargetData.imageDatas[0] = imageData;
                Stream s = new MemoryStream(singleTargetData.imageDatas[0]);
                Image image = Image.FromStream(s);
                s.Close();
                panelImage1.Refresh();
                CleanImagePanel(panelImage2);
                AddImageToPanel(panelImage2, image);
                foreach (XmlNode node in analyticsTargetList.ChildNodes)
                {
                    switch (node.Name)
                    {
                        case "Targets":
                            foreach (XmlNode node2 in node.ChildNodes)
                            {
                                Graphics g = Graphics.FromHwnd(panelImage1.Handle);
                                DrawTargetBoundingBox(g, node2, image.Size.Width, image.Size.Height);
                                g.Dispose();
                            }
                            break;
                    }
                }我现在在panelImage1和panelImage2中分别画动态框框和动态视频,但是如果画在同一个panel中只能实现动态视频,框框被刷新了 要实现动态的框框和视频在一个控件里 代码该怎么写呢 这方面不太熟,大家给指点下啊

解决方案 »

  1.   

    自己顶个,再说下,panelImage1和panelImage2内能分别实现动态框和视频,而如果把代码里的panelImage2改为panelImage1的话 在panelImage1内只有视频 动态跟踪框没有了 不知这该怎么改
      

  2.   

    谢谢大家,我改出来了代码如下 思路就是把框框画到image里这样就没问题了,不断刷新图片 就动态了                singleTargetData.imageDatas[0] = imageData;
                    Stream s = new MemoryStream(singleTargetData.imageDatas[0]);
                    Image image = Image.FromStream(s);
                    s.Close();
                    CleanImagePanel(panelImage1);
                    foreach (XmlNode node in analyticsTargetList.ChildNodes)
                    {
                        switch (node.Name)
                        {
                            case "Targets":
                                foreach (XmlNode node2 in node.ChildNodes)
                                {
                                    Graphics g = Graphics.FromImage(image);
                                    //这里把框画在image里                                 DrawTargetBoundingBox(g, node2, image.Size.Width, image.Size.Height);
                                    g.Dispose();
                                }
                                break;
                        }
                    }
                    AddImageToPanel(panelImage1, image);