我正在尝试选择网络摄像头框架的像素颜色。因此,我毫无问题地将捕获的帧放到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/