在 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 中存储图像和指针的主要内容,如果未能解决你的问题,请参考以下文章