我有一个使用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模式。
答案 0 :(得分:0)
我认为你需要初始化imageDct,然后再将其用作dct中的参数。
试试这个:
imageDct = Mat( floatImage.rows, floatImage.cols, floatImage.type() );
在致电dct。
之前