Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV在C++中选择适当的子矩阵_C++_Matrix_Opencv_Submatrix - Fatal编程技术网

OpenCV在C++中选择适当的子矩阵

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

我对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 of ROI = %d, %d.\nFor IDX = %d, %d\n", tempROI.rows, tempROI.cols, i, j);
进入循环进行调试。我看到我的投资回报率显著增加。例如,这里有一个随机转储:

投资回报率的大小=191,9。 对于IDX=4186

很明显,有些东西不能正常工作,我认为这是一个合理的假设,即谬误在于我对如何从较大的子矩阵中正确选择子矩阵的理解。有人能告诉我最好的方法是什么吗

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


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

似乎我对Rect的定义缺乏理解。我假设它是左上角点/右下角点,但实际上它是左上角点,宽度,高度。也就是说,我真的怀疑这是做我想做的事情最有效的方式。任何想法都将不胜感激。谢谢。什么是*数据->cvData?不能直接使用大型矩阵对象吗?它依赖于处理。你想用这些9x9窗口做什么?