在MSVC 2013中使用OpenCV(2.49二进制文件)时,调试运行时会在此短代码中使用cv::minMaxIdx
时报告堆栈损坏:
cv::MatND hist;
int histSize[] = { 256 };
float range[] = { 0, 256 };
const float* histRange[] = { range };
cv::calcHist(&image, 1, { 0 }, cv::Mat(), hist, 1, histSize, histRange, true /* uniform */, true /* accumulate */);
// this line provokes a stack corruption
cv::minMaxIdx(hist, nullptr, nullptr, nullptr, &maxIdx);
我可以在调试器中看到直方图,所有值和变量看起来都是正确的。在发布模式下不会发生此问题,但我怀疑这只是因为检查未运行。将hist
更改为hist.col(0)
也无济于事。