在 OpenCV 中存储图像和指针

Posted

技术标签:

【中文标题】在 OpenCV 中存储图像和指针【英文标题】:Storing images and pointers in OpenCV 【发布时间】:2010-05-04 08:51:22 【问题描述】:

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

图像/帧是这样初始化的

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

在循环中找到最大帧

if( currentvalue > maxvalue ) 
    maxvalue = currentvalue;
    maxframe = frame;

我知道我在 maxframe 变量中存储的是同一个指针,指向当前加载到帧指针中的帧。当一个新的帧被加载到帧变量中时,maxframe 指针也会指向它。所以当我保存 maxframe 指向的图像时,我会保存循环中的最后一张图像,不管它的计算值是多少。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢,成功了!稍后我会考虑将我的代码更新到更高版本。这就是使用旧示例的问题。 ;)

以上是关于在 OpenCV 中存储图像和指针的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV基础---图像存储器(Mat类)

OpenCV用像素指针构建图像

OpenCV入门——基础

OpenCV中Mat的属性

OpenCV3入门Mat操作

OPENCV - 直接使用指针访问过滤图像并使用内核矩阵过滤