Ich versuche eine Pixelfarbe der Frames meiner Webcam auszuwählen. So fange ich die Frames einer Show dann in einer ImageBox ohne Probleme auf. Aber wenn ich versuche, auf das Image zuzugreifen, das in ImageBox gespeichert ist, wenn ich auf die ImageBox doppelklicke, erhalte ich eine CvException. Die Ausnahme erscheint, wenn ich versuche, das Pixel des Bildes zu erhalten.Wie kann ich ein EmguCV ImageBox Image bekommen?
OpenCV: nicht erkannte oder nicht unterstützten Array-Typ
Dies ist, wie ich die Frames erfassen:
// 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];
}
}
}
}
Und in Doubleclick Veranstaltung:
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
}
}
Anscheinend ist das Bild nicht null. Was mache ich falsch? Vielleicht etwas mit Thread-Dingen?
eine Weile, aber Sie sollten Ihre eigene Frage beantworten, so diese aus der „offene Frage“ Warteschlange kommt. –