如果这看起来像个愚蠢的问题,我很抱歉...... 我对OpenCV中的cvLoadImage有疑问:
IplImage *frame;
for (unsigned int i = 0; i < LENGTH; i++)
{
frame = cvLoadImage(filename.c_str());
// do something...
}
对于cvLoadImage
的每次调用,是否存储在内存中的新IplImage
?在覆盖后从堆释放的frame
指向的旧变量是什么?
此外,当我尝试发布如下图像时......
IplImage *frame;
for (unsigned int i = 0; i < LENGTH; i++)
{
if (frame != NULL)
cvReleaseImage(&frame);
frame = cvLoadImage(filename.c_str());
// do something...
}
为什么这个解决方案不起作用(内存访问不良)? 最好的问候,Vi。
答案 0 :(得分:2)
是的,由cvLoadImage分配的内存。出现错误是因为您没有在开始时初始化帧。它必须初始化为零或NULL。