这是我要反转的原始矩阵:
rows: 5
cols: 5
dt: f
data: [ 927321., 1014163., 923303., 923303., 947641., 1014163.,
1260101., 1062130., 1062130., 1102823., 923303., 1062130.,
1004488., 1004488., 990651., 923303., 1062130., 1004488.,
1004488., 990651., 947641., 1102823., 990651., 990651., 1116004. ]
并使用此行反转上述矩阵:
cvInvert(Mult, Inv, CV_LU);
反转后返回的矩阵是:
rows: 5
cols: 5
dt: f
data: [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0. ]
并根据文件:
在LU方法的情况下,该函数返回src1行列式 (src1必须是正方形)。如果为0,则矩阵不反转并且src2 充满了零。
但奇怪的是,我要求我的朋友在Matlab中使用相同的矩阵做同样的事情并返回一个非零矩阵...这意味着行列式不是零..那么为什么opencv认为行列式是零?
由于
答案 0 :(得分:1)
给定矩阵排名不足(行列式为零),因此无法计算其逆矩阵。
答案 1 :(得分:0)
根据在线矩阵逆变器,逆是:
0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000
0.000 0.000 68719476736.000 -68719476736.000 0.000
0.000 0.000 -68719476736.000 68719476736.000 0.000
0.000 0.000 0.000 0.000 0.000
这是一个非常奇怪的矩阵,其余的术语非常非常庞大。这意味着在线计算器存在问题,因为确定性是如此之大,因为大小或两者,您的例程会因确定性而溢出。我愿意打赌MatLab不会有这些类型的大小限制,因此它的有效值。