1

我对opencv相当陌生。我正在尝试编写一个循环,对大型(~1000 x ~1000)矩阵的小(9x9)子矩阵进行一些处理。基于一些掩码矩阵,我决定是否在大矩阵中的特定点处理 9x9。根据我阅读的文档,我试图将这行代码放在一个循环中:

Mat tempROI(*(data->cvData), Rect(i-4,j-4, i+5, j+5));

i 和 j 是较大矩阵的行、列索引。然后我有一个处理 tempROI 的函数。然而,我发现我的 ROI 的大小随着 i 和 j 的增加而增加。我甩了一个:

printf("Size of ROI = %d, %d.\nFor IDX = %d, %d\n", tempROI.rows, tempROI.cols, i, j);

进入循环调试。我看到我的投资回报率正在显着增加。例如,这是一个随机转储:

ROI 大小 = 191、9。对于 IDX = 4、186

显然有些东西不能正常工作,我认为这是一个公平的假设,即谬误在于我对如何从更大的子矩阵中正确选择子矩阵的理解。有人可以建议解决此问题的最佳方法是什么吗?

在相关说明中,我真的希望只使用一个指针,而不是在每次循环迭代时实际创建矩阵头。

简而言之 - 做我想做的事情的正确方法是什么?非常感谢。

4

0 回答 0