c++ - OpenCV解决任意系统的返回常数值?
问题描述
我将一个 4x4 矩阵初始化为单位矩阵。然后我用随机值初始化一个 4x1 向量 B。我希望 OpenCV 解决系统 Ax = B。
由于 A 是恒等式,我的期望是 x = B。
但是我不明白。首先我编码:
Mat A(Size(4,4), CV_64FC1);
// Identity matrix, by force
for(int i=0; i<4; i++) {
for (int j=0; j<4; j++) {
if(i=j=) A.at<float>(i,j) = 1;
else A.at<float>(i,j) = 0;
}
}
Mat B(Size(4, 1), CV_64FC1);
B.at<float>(0, 0) = 1;
B.at<float>(1, 0) = 2;
B.at<float>(2, 0) = 3;
B.at<float>(3, 0) = 4;
Mat sol(Size(4, 1), CV_64FC1);
solve(A, B, sol, DECOMP_LU);
上面的输出是 sol = <02313, 0, 0, 0>,而不是 <1,2,3,4>
解决方案
由于某种原因,第一个尺寸将宽度作为第一个参数,然后是高度,但 Mat 采用行然后是 cols,老实说有点令人困惑 x)
其次,64fc1 是双倍的,我想不会浮动,其余的工作正常
Mat A(Size(4, 4), CV_64FC1);
// Identity matrix, by force
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (i ==j) A.at<double>(i, j) = 1;
else A.at<double>(i, j) = 0;
}
}
Mat B(Size(1,4), CV_64FC1);
B.at<double>(0, 0) = 1.0;
B.at<double>( 1,0) = 2.0;
B.at<double>(2, 0) = 3.0;
B.at<double>(3, 0) = 4.0;
Mat sol;
solve(A, B, sol, DECOMP_LU);
cout << sol << endl;
推荐阅读
- python - Deleting duplicate elements in a array
- javascript - Javascript值分配不知何故不起作用
- reactjs - componentDidMount() 在 reactJs v15.x 中不起作用
- java - 我可以制作一个始终运行语音识别的后台服务吗
- ios - Not able to set proportional height for a UIView in storyboard in Xcode 11
- python - 如何以 10 个字符的行显示字符串
- c - 当使用 write() 作为参数时,来自 printf 的数据被写入文件
- linux - 在 Kubernetes 的工作节点之间共享存储?
- cakephp - CakeDC 用户插件未读取 permissions.php
- javascript - 在 Adobe 表单填写中通过 JavaScript 计算的小数小时数错误