金字塔均值漂移的OpenCV错误(cvPyrMeansShiftFiltering)

时间:2010-09-20 02:44:11

标签: visual-studio-2008 opencv

我在OpenCV中使用cvPyrMeansShiftFiltering()函数时遇到问题。对它的任何调用都会导致“断言失败”消息。

以下代码在调用cvPryMeanShiftFiltering的行上失败:

#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
#include <iostream>
using namespace std;

int main()
{
    string imageFile = "..\\bear.jpg";  
    IplImage* src = cvLoadImage(imageFile.c_str());
    int width = src->width;
    int height = src->height;
    IplImage* result = cvCreateImage(cvSize(width,height),8,3); 
    cvPyrMeanShiftFiltering(src,result,4.0,4.0,0);  

    cvReleaseImage(&src);
    cvReleaseImage(&result);
    return 0;
}

程序一直运行,直到将以下错误消息发送到控制台:

  

OpenCV错误:断言失败(udata&lt;(uchar *)ptr&amp;&amp;                  ((uchar *)ptr - udata)&lt; =(ptrdiff_t)(sizeof(void *)+ 16))在未知函数中,文件...... \ src \ cxcore \ cxalloc.cpp,第76行

失败的断言在cxalloc.cpp中的cv :: fastFree()中。该程序在VS 2008上运行在Windows 7(64位)上.OpenCV版本为2.0。

我将补充一点,我也在VS2008和VS2010上尝试使用OpenCV 2.1。所以必须是我正在做的事情,对吗?为什么我会收到此错误?

2 个答案:

答案 0 :(得分:0)

尝试使用最后一个参数!= 0.该参数(max_level)描述了将使用多少级别的金字塔进行分割,并且没有意义为0。

答案 1 :(得分:0)

我通过应用https://code.ros.org/trac/opencv/changeset/3081/trunk/opencv/modules/imgproc/src/segmentation.cpp

中描述的更改解决了类似的问题

我通过创建openCV.sln项目来重新创建dll文件,如http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010_CMake

中所述

最后一个参数也应该与0不同。