<i id='qiTPw'><tr id='qiTPw'><dt id='qiTPw'><q id='qiTPw'><span id='qiTPw'><b id='qiTPw'><form id='qiTPw'><ins id='qiTPw'></ins><ul id='qiTPw'></ul><sub id='qiTPw'></sub></form><legend id='qiTPw'></legend><bdo id='qiTPw'><pre id='qiTPw'><center id='qiTPw'></center></pre></bdo></b><th id='qiTPw'></th></span></q></dt></tr></i><div id='qiTPw'><tfoot id='qiTPw'></tfoot><dl id='qiTPw'><fieldset id='qiTPw'></fieldset></dl></div>

      <legend id='qiTPw'><style id='qiTPw'><dir id='qiTPw'><q id='qiTPw'></q></dir></style></legend>

        <tfoot id='qiTPw'></tfoot>

        <small id='qiTPw'></small><noframes id='qiTPw'>

        • <bdo id='qiTPw'></bdo><ul id='qiTPw'></ul>

        从 OpenCV 中的旋转图像旋转回点

        时间:2023-09-18

        1. <tfoot id='0lOL3'></tfoot>
          • <small id='0lOL3'></small><noframes id='0lOL3'>

              <tbody id='0lOL3'></tbody>

              <legend id='0lOL3'><style id='0lOL3'><dir id='0lOL3'><q id='0lOL3'></q></dir></style></legend>
              <i id='0lOL3'><tr id='0lOL3'><dt id='0lOL3'><q id='0lOL3'><span id='0lOL3'><b id='0lOL3'><form id='0lOL3'><ins id='0lOL3'></ins><ul id='0lOL3'></ul><sub id='0lOL3'></sub></form><legend id='0lOL3'></legend><bdo id='0lOL3'><pre id='0lOL3'><center id='0lOL3'></center></pre></bdo></b><th id='0lOL3'></th></span></q></dt></tr></i><div id='0lOL3'><tfoot id='0lOL3'></tfoot><dl id='0lOL3'><fieldset id='0lOL3'></fieldset></dl></div>
                • <bdo id='0lOL3'></bdo><ul id='0lOL3'></ul>
                  本文介绍了从 OpenCV 中的旋转图像旋转回点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我在轮换方面遇到了麻烦.我想做的是:

                  I’m having troubles with rotation. What I want to do is this:

                  • 旋转图像
                  • 检测旋转图像上的特征(点)
                  • 旋转点,这样我就可以得到与初始图像相对应的点坐标

                  我在第三步上有点卡住了.

                  I’m a bit stuck on the third step.

                  我设法使用以下代码旋转图像:

                  I manage to rotated the image with the following code:

                  cv::Mat M(2, 3, CV_32FC1);
                  cv::Point2f center((float)dst_img.rows / 2.0f, (float)dst_img.cols / 2.0f);
                  M = cv::getRotationMatrix2D(center, rotateAngle, 1.0);
                  cv::warpAffine(dst_img, rotated, M, cv::Size(rotated.cols, rotated.rows));
                  

                  我尝试使用以下代码旋转点:

                  I try to rotate back the points with this code:

                  float xp = r.x * std::cos( PI * (-rotateAngle) / 180 ) - r.y * sin(PI * (rotateAngle) / 180);
                  float yp = r.x * sin(PI * (-rotateAngle) / 180) + r.y * cos(PI * (rotateAngle) / 180);
                  

                  工作并不费劲,但图像上的点数不能很好地反映.有一个偏移量.

                  It is not to fare to be working but the points don’t go back well on the image. There is an offset.

                  感谢您的帮助

                  推荐答案

                  如果 M 是你从 cv::getRotationMatrix2D 得到的旋转矩阵,旋转一个 cv::Point p 使用这个矩阵你可以这样做:

                  If M is the rotation matrix you get from cv::getRotationMatrix2D, to rotate a cv::Point p with this matrix you can do this:

                  cv::Point result;
                  result.x = M.at<double>(0,0)*p.x + M.at<double>(0,1)*p.y + M.at<double>(0,2);
                  result.y = M.at<double>(1,0)*p.x + M.at<double>(1,1)*p.y + M.at<double>(1,2);
                  

                  如果要旋转一个点,生成M的逆矩阵或使用cv::getRotationMatrix2D(center, -rotateAngle, scale)生成矩阵用于反向旋转.

                  If you want to rotate a point back, generate the inverse matrix of M or use cv::getRotationMatrix2D(center, -rotateAngle, scale) to generate a matrix for reverse rotation.

                  这篇关于从 OpenCV 中的旋转图像旋转回点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:稀疏酉矩阵的最佳 C++ 矩阵库 下一篇:glm 在简单翻译上返回 nan

                  相关文章

                  最新文章

                  <tfoot id='dLua3'></tfoot>

                  1. <legend id='dLua3'><style id='dLua3'><dir id='dLua3'><q id='dLua3'></q></dir></style></legend>

                    <small id='dLua3'></small><noframes id='dLua3'>

                    • <bdo id='dLua3'></bdo><ul id='dLua3'></ul>

                      <i id='dLua3'><tr id='dLua3'><dt id='dLua3'><q id='dLua3'><span id='dLua3'><b id='dLua3'><form id='dLua3'><ins id='dLua3'></ins><ul id='dLua3'></ul><sub id='dLua3'></sub></form><legend id='dLua3'></legend><bdo id='dLua3'><pre id='dLua3'><center id='dLua3'></center></pre></bdo></b><th id='dLua3'></th></span></q></dt></tr></i><div id='dLua3'><tfoot id='dLua3'></tfoot><dl id='dLua3'><fieldset id='dLua3'></fieldset></dl></div>