关于如何将线条图像转换为圆形图像的问题

moo*_*apa 4 c++ opencv

首先,对不起我的英语说得不好。

即使我的言语有些尴尬,我也希望您能理解。

我是入门Opencv的初学者。

我想将水平线的图片转换为圆形的图片。

我试图在几篇文章中推荐linearPolar,logPolar和warpPolar,但没有得到理想的结果。

结果图像:

结果图像

这是我要放入的图像和所需的结果。

输入图片:

输入图像

输出图像:

输出图像

我应该使用什么函数来得到这个结果?

如果您有任何示例或解释供参考,请告诉我。

如果您仅让我知道关键字,我将努力搜索Google和该网站。

感谢您阅读我的问题。

Pet*_*erT 5

linearPolar还是warpPolar您要找的东西

您只需要将WARP_INVERSE_MAP标志传递给它即可使它改变您要寻找的方向。

来自的修改示例 samples/cpp/polar_transforms.cpp

将是这样的:

#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>

int main(int argc, const char** argv)
{
    using namespace cv;
    using namespace std;

    int flags = INTER_LINEAR + WARP_FILL_OUTLIERS;

    Mat src = imread(R"(C:\temp\IPpzR.png)");
    Mat lin_polar_img;
    rotate(src, lin_polar_img, cv::ROTATE_90_COUNTERCLOCKWISE);
    imshow("Loaded",src);
    Mat recovered_lin_polar_img;
    Point2f center( (float)src.cols / 2, (float)src.rows / 2 );
    double maxRadius = min(center.y, center.x);

    cv::linearPolar(lin_polar_img, recovered_lin_polar_img, center, maxRadius, flags + WARP_INVERSE_MAP);
    cv::imshow("Modified",recovered_lin_polar_img);
    cv::waitKey();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

得到以下结果:
在此处输入图片说明