Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么OpenCV';是polarWarp在一些图像中引入了伪影?_C++_Opencv_Polar Coordinates_Remap - Fatal编程技术网

C++ 为什么OpenCV';是polarWarp在一些图像中引入了伪影?

C++ 为什么OpenCV';是polarWarp在一些图像中引入了伪影?,c++,opencv,polar-coordinates,remap,C++,Opencv,Polar Coordinates,Remap,我有一些小的(通常约60x60或更少)BGR图像,我正在使用OpenCV的warpPolar为其生成极轴投影。大多数情况下,它工作得很好,但偶尔我会得到一张图像(与正常工作的图像来自同一个相机源),其中有一个散射的伪影。三种不同的插值方法都会产生伪影。我确实发现增加极半径可以消除伪影,但有人能解释为什么会有不同吗 以下是代表调用warpPolar的代码: Mat m = imread( "image.png", IMREAD_COLOR); Moments mom = mom

我有一些小的(通常约60x60或更少)BGR图像,我正在使用OpenCV的warpPolar为其生成极轴投影。大多数情况下,它工作得很好,但偶尔我会得到一张图像(与正常工作的图像来自同一个相机源),其中有一个散射的伪影。三种不同的插值方法都会产生伪影。我确实发现增加极半径可以消除伪影,但有人能解释为什么会有不同吗

以下是代表调用warpPolar的代码:

Mat m = imread( "image.png", IMREAD_COLOR);
Moments mom = moments( m);
int len = //... semi-major axis*2 for ellipse fit
warpPolar( m, polar, Size(), Point( mom.m10/mom.m00, mom.m01/mom.m00) , len, INTER_LINEAR);
以下是一个正常工作的图像:

--[极性]-->

这是一幅图像,分别使用“最近的”、“线性”和“LANCZOS4”,在大约四分之一的地方形成了彩虹状的伪影,在底部形成了一条灰色带:

--[1]->

…然后以更长的半径


问题的答案是warpPolar()调用需要一个额外的标志,指定如何填充源图像之外的像素。这修正了它:

warpPolar( m, polar, Size(), Point( mom.m10/mom.m00, mom.m01/mom.m00) , len, INTER_LINEAR | CV_WARP_FILL_OUTLIERS);

您正在显示或写入扭曲的图像吗?你能包括你用来显示它的代码吗?你能贴出原图吗?