相关疑难解决方法(0)

如何从LogPolar变换获得比例和旋转角度

我正在尝试使用LogPolar变换从两个图像中获取比例和旋转角度.下面是两个300x300样本图像.第一个矩形是100x100,第二个矩形是150x150,旋转45度.

在此输入图像描述 在此输入图像描述

算法:

  1. 将两个图像转换为LogPolar.
  2. 使用相位相关找到平移位移.
  3. 将平移移位转换为缩放和旋转角度(如何执行此操作?).

我的代码:

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

int main()
{
    cv::Mat a = cv::imread("rect1.png", 0);
    cv::Mat b = cv::imread("rect2.png", 0);
    if (a.empty() || b.empty())
        return -1;

    cv::imshow("a", a);
    cv::imshow("b", b);

    cv::Mat pa = cv::Mat::zeros(a.size(), CV_8UC1);
    cv::Mat pb = cv::Mat::zeros(b.size(), CV_8UC1);
    IplImage ipl_a = a, ipl_pa = pa;
    IplImage ipl_b = b, ipl_pb = pb;
    cvLogPolar(&ipl_a, &ipl_pa, cvPoint2D32f(a.cols >> 1, a.rows >> 1), 40);
    cvLogPolar(&ipl_b, &ipl_pb, cvPoint2D32f(b.cols >> 1, b.rows >> 1), 40);

    cv::imshow("logpolar …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

11
推荐指数
1
解决办法
7556
查看次数

标签 统计

c++ ×1

opencv ×1