opencv - EmguCV 3.1 Capture.QueryFrame间歇性返回错误

标签 opencv emgucv opencv3.1

我正在使用EmguCV从磁盘上存储的视频文件创建捕获。我设置框架位置的捕获属性,然后执行QueryFrame。在视频的某些帧上,当我进一步处理Mat时,出现错误“{“OpenCV:无法识别或不受支持的数组类型”}“。并非在视频的所有帧上都发生这种情况,但是当我为同一视频运行它时,它在视频中的相同帧上发生。如果我将Mat保存到磁盘,则图像看起来可以很好地保存,并且没有错误。这是用于加载和处理图像的代码:

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;
        }
    }
}

在进一步处理中引发异常的代码行
var r = _classifier.DetectMultiScale(matIn, 1.1, 2, new Size(200, 200), new Size(375, 375));

就像我说的那样,视频的每一帧都不会失败。

我正在尝试解决此问题,因为有时它会跳过1帧,但有时它会跳过整个帧,这使我错过了视频中的重要事件。

最佳答案

经过更多的工作后,我发现在进入级联分类器之前,Mat已设置了ROI。在垫失败的情况下,ROI设置为0高度和0宽度。这引起了问题。

关于opencv - EmguCV 3.1 Capture.QueryFrame间歇性返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593829/

相关文章:

neural-network - Caffe+GPU+Opencv3.1+Python3.5+Anaconda :fatal error: Python. h: 没有那个文件或目录

python - 如何在多张图片中找到一个模板?

python - OpenCV Python 3.3

c# - OpenCV不包含 'GetPixel'的定义

java - 运行可执行 Jar 不会在 java.library.path 错误中抛出 opencv_java310 但在 IDE 中运行正常

python - OpenCV Python - 无法导入贡献模块

performance - 矩阵求逆的最快方法

image - 使用 CUDA 和 OpenCV 在灰度 jpg 图像上应用 Sobel 边缘检测

opencv - 使用 EmguCV 将部分图像复制到另一张图像

c# - 使用 EmguCV QueryGrayFrame() 处理视频时如何修复此内存不足异常