GpG*_*GpG 6 c++ opencv visual-studio
我在运行以下代码时观察到异常(Microsoft C++ 异常:内存位置 0x000000000028C510 处的 cv::Exception。):
cv::Mat a(5,60, CV_32FC1);
cv::Mat b(60,5, CV_32FC1);
cv::Mat c = a*b;
cv::Mat d(5, 60, CV_32FC1);
cv::Mat e(60,5, CV_32FC1);
cv::Mat f = d*e; 
执行第三行代码时抛出异常:
cv::Mat c = a*b;
之后不再发生( cv::Mat f = d*e; 不再抛出)。调试将我引导到以下 opencv 的功能:
inline
MatExpr::operator Mat() const
{
    Mat m;
    op->assign(*this, m);
    return m;   <- this is supposed to throw the exception
}
如果我写:
auto c = a*b;
而不是抛出异常,而是在最后一次调用时抛出:
cv::Mat f = d*e;
仅在调试模式下和使用opencv 3.0或3.1时才会抛出异常。在发布模式或使用 opencv 2.4 时不会抛出异常。
我在 Visual Studio 2013 和 2015 中尝试过。我使用了预构建的 opencv 版本,可从官方 opencv 的网页下载。我检查了正确的 opencv 库是否根据 VS 版本链接。我只试过 64 位。我也在其他计算机上尝试过,所有计算机都装有 Windows 7,并得到了相同的行为。
论坛上已经发布了一些具有类似标题的问题,但没有人解决这一特定问题。
最后,程序正常运行,我知道我可以在 VS 中关闭这种异常并忘记它,但无论如何,我想了解这种奇怪行为的原因可能是什么。有没有其他人经历过类似的事情?
| 归档时间: | 
 | 
| 查看次数: | 577 次 | 
| 最近记录: |