例如,我们在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)
有没有更简单的方法?
您可以使用repeatOpenCV 的功能来复制矩阵.
上述MATLAB命令的等效OpenCV代码如下:
cv::Mat B = A/cv::repeat(A.row(3),4,1);
Run Code Online (Sandbox Code Playgroud)