我有一个函数使用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)"时,我得到了一个错误消息:"未处理的异常在0x76DA2EEC在PerceptualHash.exe:微软c++异常:cv::异常在内存位置0x00C3E108。"
我不知道为什么。有人能帮忙吗?openv2.4.7, visual studio 2012, windows 8 64,项目为Win32,Debug模式
我认为你需要初始化imageDct之前使用它作为dct的参数。
试试这个:
imageDct = Mat( floatImage.rows, floatImage.cols, floatImage.type() );