OpenCV在C++中选择适当的子矩阵
我对opencv相当陌生。我试图写一个循环,在一个大~1000 x~1000矩阵的一个小9x9子矩阵上进行一些处理。根据一些掩模矩阵,我决定是否在大矩阵中的特定点处理9x9。根据我阅读的文档,我试图将这行代码放入循环中:OpenCV在C++中选择适当的子矩阵,c++,matrix,opencv,submatrix,C++,Matrix,Opencv,Submatrix,我对opencv相当陌生。我试图写一个循环,在一个大~1000 x~1000矩阵的一个小9x9子矩阵上进行一些处理。根据一些掩模矩阵,我决定是否在大矩阵中的特定点处理9x9。根据我阅读的文档,我试图将这行代码放入循环中: Mat tempROI(*(data->cvData), Rect(i-4,j-4, i+5, j+5)); i和j是较大矩阵的行、列索引。然后我有一个处理tempROI的函数。然而,我发现我的投资回报率随着我和j的增加而增加。我甩了一个: printf("Size o
Mat tempROI(*(data->cvData), Rect(i-4,j-4, i+5, j+5));
i和j是较大矩阵的行、列索引。然后我有一个处理tempROI的函数。然而,我发现我的投资回报率随着我和j的增加而增加。我甩了一个:
printf("Size of ROI = %d, %d.\nFor IDX = %d, %d\n", tempROI.rows, tempROI.cols, i, j);
进入循环进行调试。我看到我的投资回报率显著增加。例如,这里有一个随机转储:
投资回报率的大小=191,9。
对于IDX=4186
很明显,有些东西不能正常工作,我认为这是一个合理的假设,即谬误在于我对如何从较大的子矩阵中正确选择子矩阵的理解。有人能告诉我最好的方法是什么吗
在一个相关的注释中,我真的希望只使用指针,而不是每次循环迭代都实际创建矩阵头
简言之,做我想做的事情的正确方法是什么?非常感谢。似乎我对Rect的定义缺乏理解。我假设它是左上角点/右下角点,但实际上它是左上角点,宽度,高度。也就是说,我真的怀疑这是做我想做的事情最有效的方式。任何想法都将不胜感激。谢谢。什么是*数据->cvData?不能直接使用大型矩阵对象吗?它依赖于处理。你想用这些9x9窗口做什么?