首先,对不起我的英语说得不好。
即使我的言语有些尴尬,我也希望您能理解。
我是入门Opencv的初学者。
我想将水平线的图片转换为圆形的图片。
我试图在几篇文章中推荐linearPolar,logPolar和warpPolar,但没有得到理想的结果。
结果图像:
这是我要放入的图像和所需的结果。
输入图片:
输出图像:
我应该使用什么函数来得到这个结果?
如果您有任何示例或解释供参考,请告诉我。
如果您仅让我知道关键字,我将努力搜索Google和该网站。
感谢您阅读我的问题。
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)