gpt4 book ai didi

c++ - OpenCV matchTemplate 抛出内存错误但只是第一次

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:51 25 4
gpt4 key购买 nike

我正在处理一组 >3000 张相同大小的图像,每 300 张图像更改一次模板。

代码片段:

cv::Mat inTplate, cFrame, Cresult;
Cresult.create(resultH, resultW, IPL_DEPTH_32F);
cFrame(rect).copyTo(inTplate);
...
// this part executed for every frame
matchTemplate(cFrame, inTplate, Cresult, CV_TM_CCORR_NORMED);
minMaxLoc(Cresult, &minVal, &maxVal, &minLoc, &maxLoc, Mat());

矩形 = ( 250, 20, 1420, 1040);结果 H = 41;结果W = 501;

第一次通过代码时,对 matchTemplate 的调用引发了内存错误,我认为该错误来自 combase.dll 并引用了一个地址,该地址不在三个矩阵中的任何一个空间中:cFrame、inTplate 或 Cresult。

三个矩阵的大小也是一致的:cFrame 1080 行 X 1920 列,inTplate 1040 行 X 1420 列; Cresult 是 41 行 X 501 列。是的,第一次 inTplate 是 cFrame 的一个区域;此后cFrame是下一个读入的图像。

我验证了从 matchTemplate 返回的答案是正确的——匹配是正确的。内存故障只发生在第一次调用时,不会发生在任何后续帧上。

我是在做错什么还是在查看 OpenCV 中的错误?

感谢您抽出时间。

最佳答案

一种回答:

我修改了对 matchTemplate 的调用以使用 try ... catch block 。但它不会捕获异常。

然后我进入调试 | window |异常设置并关闭关闭 cv::Exception 的复选框。

现在程序运行时不会因内存异常而停止。看来我现在已经启用 OpenCV 来捕获异常并处理它。所以潜在的问题仍然存在,但 OpenCV 正在处理它。不过,我仍然想了解为什么首先抛出异常。

关于c++ - OpenCV matchTemplate 抛出内存错误但只是第一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com