C++ 使用opencv的cv::dct时出现内存错误
我有一个使用opencv的函数C++ 使用opencv的cv::dct时出现内存错误,c++,visual-studio,opencv,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(i
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(浮点,IVIDECTCT)”时,我得到一个错误消息:“感知HASH.EXE中的0x76DA2EEC中未处理的异常:微软C++异常:CV::内存位置0x00 C3E108异常。”
我不知道为什么。有人能帮忙吗?
它是opencv2.4.7,visual studio 2012,windows 8 64,项目是Win32,调试模式。我认为在将imageDct用作dct中的参数之前,需要初始化imageDct 试试这个:
imageDct = Mat( floatImage.rows, floatImage.cols, floatImage.type() );
调用dct之前。您不需要初始化
Mat
您正在保存系数,因此当抛出cv::Exception
时,运行程序的控制台会打印一条更具体的错误消息。那是什么意思?如果没有,您是否尝试过在中包围代码,尝试捕获/并读取抛出异常的消息?