Advertisement
jack06215

[OpenCV] 2D point to vector form

Jul 8th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. void lsd_vector_form(std::vector<std::vector<float>> &L, std::vector<std::vector<float> > &L_vec, uint no_of_lines)
  2. {
  3.     L_vec.resize(3); //Height
  4.     for (int i = 0; i < 3; ++i)
  5.     {
  6.         L_vec[i].resize(no_of_lines);
  7.     }
  8.     cv::Mat A(3, 3, CV_32F);
  9.     cv::Mat s, u, vt;
  10.     A.at<float>(0, 2) = 1;
  11.     A.at<float>(1, 2) = 1;
  12.     A.at<float>(2, 0) = 0;
  13.     A.at<float>(2, 1) = 0;
  14.     A.at<float>(2, 2) = 0;
  15.     for (int i = 0; i < no_of_lines; ++i)
  16.     {
  17.         A.at<float>(0, 0) = L[0][i];
  18.         A.at<float>(0, 1) = L[1][i];
  19.         A.at<float>(1, 0) = L[2][i];
  20.         A.at<float>(1, 1) = L[3][i];
  21.         cv::SVD::compute(A, s, u, vt);  //YY=U*S*V'
  22.         vt = vt.t();
  23.         vt.col(0) = vt.col(0)*-1;
  24.         L_vec[0][i] = vt.at<float>(0, 2);
  25.         L_vec[1][i] = vt.at<float>(1, 2);
  26.         L_vec[2][i] = vt.at<float>(2, 2);
  27.     }
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement