c++ - 在 OpenCV 中存储图像和指针

标签 c++ pointers opencv

我有一个循环遍历一段视频,并对图像进行一些处理/计算。我想将图像保存在处理过程中具有最高值的循环中,但我在循环完成时临时存储图像时遇到了一些困难。

图像/帧是这样初始化的

IplImage* frame = 0;
IplImage* maxframe = 0;

循环时最大帧由

发现
if( currentvalue > maxvalue ) {
    maxvalue = currentvalue;
    maxframe = frame;
}

我知道我在 maxframe 变量中存储的是指向帧指针中当前加载的帧的相同指针。当一个新的帧被加载到 frame 变量中时,它也将被 maxframe 指针指向。因此,当我保存 maxframe 指向的图像时,无论其计算值是多少,我都会保存循环中的最后一张图像。

我尝试了很多不同的解决方案,但我似乎无法解决这个问题。谁能帮我? :)

最佳答案

可能 IplImage* 帧被 OpenCv 内部引用系统回收。您是否尝试过使用 IplImage* cvCloneImage(const IplImage* image) 对图像进行深度复制? 顺便说一下,对于 openCv 2.0 及更高版本,最好使用 cvMat(或 cv::Mat)来保存图像...然后使用 cv::Mat 图像,然后使用 image.clone();

关于c++ - 在 OpenCV 中存储图像和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763932/

相关文章:

c++ - 在 C++ 中输入超时

c - scanf 和指针的问题

c - 指向字符串的动态 char 指针数组

c++ - 无法在 Linux 上运行 to_string() 函数

c++ - 应用程序如何在 C++ 中删除自身及其包含的文件夹?

c - 指向结构中其他结构的指针

c++ - 访问 Mat 的每个像素

android - 我如何使用 opencv4android 分割图像

c++ - OpenCV 错误 : Assertion failed (size. width>0 && size.height>0) 简单代码

python - 使用 Homebrew 在 Mac OS X 上构建 python-boost hello world - Makefile vs. Resolution