OpenCV:minMaxIdx之后的堆栈损坏

时间:2014-05-14 07:42:14

标签: c++ opencv visual-studio-2013

在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)也无济于事。

1 个答案:

答案 0 :(得分:5)

来自OpenCV documentation

  

minIdx不为NULL时,它必须至少包含2个元素(如   以及maxIdx),即使src是单行或单列矩阵。