使用opencv的cv :: dct时出​​现内存错误

时间:2014-03-28 06:33:43

标签: c++ visual-studio opencv

我有一个使用opencv的功能。

Mat CalPHashCode(Mat image)
{
    Mat floatImage, imageDct,temp;
    resize(image, temp, Size(32, 32));  
    temp.convertTo(floatImage, CV_32FC1);
    dct(floatImage, imageDct);
    Rect roi(0, 0, 8, 8);
    Scalar imageMean = mean(imageDct(roi));
    return (imageDct(roi) > imageMean[0]);
}

当它运行到dct函数" dct(floatImage,imageDct)"时,我收到一条错误消息:" PerceptualHash.exe中0x76DA2EEC处的未处理异常:Microsoft C ++异常:cv ::内存位置0x00C3E108的异常。"

我不知道为什么。有人可以帮忙吗? 它的opencv2.4.7,visual studio 2012,windows 8 64,项目是Win32,Debug模式。

1 个答案:

答案 0 :(得分:0)

我认为你需要初始化imageDct,然后再将其用作dct中的参数。

试试这个:

imageDct = Mat( floatImage.rows, floatImage.cols, floatImage.type() );

在致电dct。

之前