Ich verwende EmguCV, um eine Aufnahme aus einer Videodatei auf der Festplatte zu erstellen. Ich habe die Capture-Eigenschaft für die Frame-Position festgelegt und dann einen QueryFrame ausgeführt. Bei bestimmten Frames aus dem Video erhalte ich den Fehler "{" OpenCV: Unbekannter oder nicht unterstützter Array-Typ "}". Dies passiert nicht bei allen Frames des Videos, aber wenn ich es für dasselbe Video starte, passiert es für die gleichen Frames im Video. Wenn ich die Matte auf Festplatte speichere, sieht das Bild einwandfrei aus und speichert ohne Fehler. Hier ist der Code für das Laden und Verarbeiten des Bildes:EmguCV 3.1 Capture.QueryFrame Fehler intermittierend
Capture cap = new Capture(movieLocation);
int framePos = 0;
while (reading)
{
cap.SetCaptureProperty(CapProp.PosFrames, framePos);
using (var frame = cap.QueryFrame())
{
if (frame != null)
{
try
{
var fm = Rotate(frame); // Works fine
// Other Processing including classifier.DetectMultiScale -- Error occurs here
frameMap.Add(framePos, r);
}
catch (Exception ex)
{
var s = ""; // Done to just see the error
}
framePos = framePos + 2;
}
else
{
reading = false;
}
}
}
Codezeile, die Ausnahme bei der weiteren Verarbeitung führt
var r = _classifier.DetectMultiScale(matIn, 1.1, 2, new Size(200, 200), new Size(375, 375));
Wie gesagt, dies scheitert nicht für jeden Frame des Videos.
Ich versuche, das zu lösen, weil es manchmal 1 Frame überspringt, aber zu anderen Zeiten ganze Framesblöcke überspringt, was mich dazu bringt, wichtige Ereignisse im Video zu verpassen.