栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

OpenCV 和 Eigen求解线性方程 Ax=B

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV 和 Eigen求解线性方程 Ax=B

#include 

#include 
#include 
#include 

#include

int test_opencv()
{
    printf("nSolve equation:AX=bnn");
    cv::Mat A = (cv::Mat_(4, 3) <<
    2926.36, 2607.79, 1,
    587.093, 2616.89, 1,
    537.031, 250.311, 1,
    1160.53, 1265.21, 1);// 4x3

    cv::Mat B = (cv::Mat_(4, 3) <<
    320.389, 208.197, 1,
    247.77, 209.726, 1,
    242.809, 283.182, 1,
    263.152, 253.715, 1);


    cv::Mat X;
    std::cout << "A=" << std::endl << A << std::endl;
    std::cout << "B=" << std::endl << B << std::endl;

    cv::solve(A, B, X, cv::DECOMP_SVD);

    std::cout << "X=" << std::endl << X << std::endl;
    cv::Mat a1 = (cv::Mat_(1, 3) << 1864, 1273, 1);
    cv::Mat b1 = a1*X;
    std::cout << "b1=" << std::endl << b1 << std::endl;
    std::cout << "真实值为:" << "283.265, 253.049, 1" << std::endl;
    return 0;
}

void SVD()
{
    double _a[12] = {2926.36, 2607.79, 1,
                     587.093, 2616.89, 1,
                     537.031, 250.311, 1,
                     1160.53, 1265.21, 1};
    double _b[12] = {320.389, 208.197, 1,
                     247.77, 209.726, 1,
                     242.809, 283.182, 1,
                     263.152, 253.715, 1};
    auto A = Eigen::Map(_a, 3, 4).transpose();
    auto B = Eigen::Map(_b, 3, 4).transpose();
    std::cout<< "A=n"< svd(A, Eigen::ComputeThinU | Eigen::ComputeThinV);

    auto x = svd.solve(B);
    std::cout<< "x=n"< 

输出:

Solve equation:AX=b

A=
[2926.3601, 2607.79, 1;
 587.09302, 2616.8899, 1;
 537.03101, 250.311, 1;
 1160.53, 1265.21, 1]
B=
[320.38901, 208.19701, 1;
 247.77, 209.726, 1;
 242.80901, 283.18201, 1;
 263.15201, 253.715, 1]
X=
[0.031037141, -0.00071162981, 4.425834e-11;
 0.0014961162, -0.031319518, -2.7852835e-11;
 225.57526, 292.40707, 1.0000001]
b1=
[285.33304, 251.21085, 1.0000001]
真实值为:83.265, 253.049, 1
===================================
A=
2926.36 2607.79       1
587.093 2616.89       1
537.031 250.311       1
1160.53 1265.21       1

B=
320.389 208.197       1
 247.77 209.726       1
242.809 283.182       1
263.152 253.715       1

x=
   0.0310371 -0.000711644  2.71051e-20
  0.00149613   -0.0313195  5.42101e-20
     225.575      292.407            1

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号