OpenCV相当于Matlab的rdivide?

mrg*_*oom 1 matlab opencv

例如,我们在Matlab中使用rdivide表达式:

  B = bsxfun(@rdivide, A, A(4,:));
Run Code Online (Sandbox Code Playgroud)

我们如何为opencv编写等价表达式?

Opencv具有除法功能,但似乎不能用于具有不同维度的矩阵:

Mat t1= Mat::ones(2,3,CV_64FC1);
Mat t2= Mat::ones(1,3,CV_64FC1);
Mat dst;
divide(t1,t2,dst);
Run Code Online (Sandbox Code Playgroud)

这不起作用,所以我们需要将一行复制到矩阵以匹配t1的维度,或者在循环中使用除以1行的除法.

我的opencv解决方案(A modified inplace):

for(int i=0;i<A.rows;++i)
{
    divide(A.row(i),A.row(3),A.row(i));
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法?

sga*_*zvi 7

您可以使用repeatOpenCV 的功能来复制矩阵.

上述MATLAB命令的等效OpenCV代码如下:

cv::Mat B = A/cv::repeat(A.row(3),4,1);
Run Code Online (Sandbox Code Playgroud)