我正在尝试选择网络摄像头框架的像素颜色。因此,我毫无问题地将捕获的帧放到ImageBox中。但是,当我双击ImageBox尝试访问存储在ImageBox上的图像时,会收到CvException。当我尝试获取图像像素时弹出异常。



这是我捕获帧的方式:

// On Form Load
Application.Idle += ProcessFrame;

private void ProcessFrame(object sender, EventArgs arg)
    {
        if (cap != null)
        {
            using (Image<Bgr, byte> frame = cap.QueryFrame())
            {
                if (frame != null)
                {
                    imageFrame = frame;
                    imageBoxFrame.Image = imageFrame;

                    Bgr color = imageFrame[50, 100];
                }
            }
        }
    }

在DoubleClick事件中:
private void imageBoxFrame_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        if (treeViewObjects.SelectedNode is ColorNode && !isTracking)
        {
            if (imageFrame == null)
                return;

            Emgu.CV.UI.ImageBox imageBox = (Emgu.CV.UI.ImageBox)sender;
            Image<Bgr, byte> image = (Image<Bgr, byte>)imageBox.Image;

            Bgr color = image[e.X, e.Y]; // This line causes the Exception
        }
    }

图像显然不是null。
我做错了什么?也许有线程的东西吗?

最佳答案

(OP回答了问题,并请求发布答案。请参阅Question with no answers, but issue solved in the comments (or extended in chat))

OP写道:


imageFrame = frame.Clone();


Bgr color = image[e.Y, e.X];

关于c# - 如何获得EmguCV ImageBox图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9928662/

10-11 20:23