0

我正在录制视频片段并在每一帧上执行各种图像处理方法以获得所需的结果。

现在,一旦我得到我正在寻找的结果,我想在我的硬盘上捕获并存储一个特定的帧。

为此,我使用 imwrite 函数将帧写入 jpg。然后我使用 imshow 在名称窗口中显示此框架。

问题是,当满足存储图像的所有条件时,我的程序而不是存储图像,会给我一个运行时错误.......

这是代码:

for(vector<double>::iterator iter_dis = Left_Point_distance.begin(); iter_dis != Left_Point_distance.end();++iter_dis)
    {


        if(*iter_dis > 20 && center.y >= 120 && center.x >=510 && Box[0].width > Box[0].height)
        {

            char* window_Punches = "Punches";
            namedWindow(window_Punches ,1);

            Mat Hook;

            imwrite("C:\\Hook.jpg", Hook);
            imshow(window_Punches, Hook);


        }


        if(*iter_dis >20 && center.y <=60)
        {

        }

    }

浏览opencv教程这就是它的完成方式,但在我的情况下不起作用......

此外,所有过程都在无限循环中进行,视频帧存储在 Mat 帧中;然后使用 imshow 函数将其显示在窗口中。

任何人都可以发现这里做错了什么......?

4

2 回答 2

3

您定义了 Mat Hook,但在尝试使用 imwrite() 编写时它是空的

于 2013-04-03T12:27:51.657 回答
0

你对这段代码有什么期望:

  Mat Hook;

  imwrite("C:\\Hook.jpg", Hook);
  imshow(window_Punches, Hook);

您创建一个空矩阵并使用它。

于 2013-04-03T12:28:01.370 回答