EmguCVを使用して、ディスクに保存されたビデオファイルからキャプチャを作成しています。フレーム位置のキャプチャプロパティを設定してから、QueryFrameを実行します。ビデオの特定のフレームで、さらにマットを処理するとエラー '{"OpenCV:Unrecognized or unsupported array type"} "が表示されます。これはビデオのすべてのフレームで発生するわけではありませんが、同じビデオに対して実行すると、ビデオの同じフレームで発生します。マットをディスクに保存すると、イメージは完全にうまく見え、エラーなく保存されます。ここで読み込み、画像を処理するためのコードです:EmguCV 3.1 Capture.QueryFrameが断続的にエラーを返す
var r = _classifier.DetectMultiScale(matIn, 1.1, 2, new Size(200, 200), new Size(375, 375));
私が言ったように、さらに処理中に例外をスローするコードの
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;
}
}
}
ラインは、これは、ビデオのフレームごとに失敗しません。
私はこの問題を解決しようとしていますが、時には1フレームをスキップしますが、それ以外の場合はフレーム全体をスキップしてビデオの重要なイベントを逃してしまいます。