C++ 将openCv中的曲线从ROI转换为帧
我目前正在做一个项目,我使用opencv在图像中找到一条曲线。因此,我设置了一个感兴趣的区域,在这里我寻找曲线。现在我的问题是,当我计算多项式的参数(比如二次)时,我使用ROI的相对坐标,但我想将函数的参数(存储在cv::Mat中)转换为原始图像。 我正在寻找的解决方案应该适用于任何次多项式C++ 将openCv中的曲线从ROI转换为帧,c++,opencv,math,matrix,C++,Opencv,Math,Matrix,我目前正在做一个项目,我使用opencv在图像中找到一条曲线。因此,我设置了一个感兴趣的区域,在这里我寻找曲线。现在我的问题是,当我计算多项式的参数(比如二次)时,我使用ROI的相对坐标,但我想将函数的参数(存储在cv::Mat中)转换为原始图像。 我正在寻找的解决方案应该适用于任何次多项式 更准确地说,我有多项式相对于ROI的函数参数,但我想要原始图像的参数。假设多项式是函数f(x)。然后g(x)=f(x)+a将其垂直移动a个单位(正a将函数向上移动) 函数h(x)=f(x-b)*水平移动函数
更准确地说,我有多项式相对于ROI的函数参数,但我想要原始图像的参数。假设多项式是函数f(x)。然后g(x)=f(x)+a将其垂直移动a个单位(正a将函数向上移动) 函数h(x)=f(x-b)*水平移动函数(正b将函数向右移动) 因此,要水平移动多项式b单位,垂直移动多项式a单位,应将变换定义为T(x,a,b)=f(x-b)+a 在您的例子中,a=roi.y;b=roi.x;假设图像坐标从0,0开始 这是我制作的一个互动演示的链接。您可以针对不同的功能进行测试,并移动滑块。
谢谢您的回答。但现在我想在转换后的函数中去掉a和b。我可以简单地把a加到f’的常数项上。但是b呢。让我更精确一点:如果f有参数p1,p2。。。请注意。f'p'1,p'2等等。我如何计算p'n,这样我就没有x-b了。例如,f\left(x\right)\=\0.5x^2+x-2应该用b=1进行转换。转换后的函数可以写成h\left(x\right)\=\0.5x^2-2.5\.您必须将函数简化为最简单的版本。这有一些算法,但我不明白你为什么要这么做,因为这会对性能产生重大影响。