0

我最近正在阅读cv::getRectSubPixOpenCV 中的代码,其中涉及处理图像中的矩形。具体来说,我被困在adjustRect用于重塑越界矩形窗口的函数上。
根据 的代码,如果(红框)如下所示 ,矩形的adjustRect左上角p=(x,y)将变为p'=(-x,-y)(蓝框) : 让我感到困惑的是中的最后一行:p在此处输入图像描述adjustRect

return src - rect.x*pix_size;

为什么src只改变x方向?据我了解,正确的代码应该是:

return src - rect.x*pix_size-rect.y*src_step

此外,如果两者都为负,我认为将指向src未定义的内存。任何人都可以帮忙吗?xy

4

1 回答 1

0

基本上,adjustRect应该与 中的代码一起考虑getRectSubPix_Cn_。当像素矩形超出图像时,OpenCV 采用不同的插值策略。
索引像素时它将正确取消引用,因为:

s0 = src[r.x*cn + c]*b1 + src2[r.x*cn + c]*b2; .

就我而言,这种插值方案如下图所示: 在此处输入图像描述 这篇文章等待更新,因为我认为应该有更多细节有待发现。

于 2019-01-24T05:09:03.777 回答