插入OpenCV中图像外的像素矩形

时间:2019-01-23 15:08:27

标签: c++ opencv interpolation subpixel bilinear-interpolation

最近,我正在OpenCV中阅读cv::getRectSubPix的代码,该代码涉及从图像中处理矩形。具体来说,我被困在函数adjustRect上,该函数用于重塑矩形矩形窗口。
根据{{​​1}}的代码,如果adjustRect(红色框)如下,则矩形的左上角p=(x,y)将移至p'=(-x,-y)(蓝色框): enter image description here 让我感到困惑的是p的最后一行:

adjustRect

为什么return src - rect.x*pix_size; 仅沿src方向移动?据我了解,正确的代码应为:

x

此外,如果return src - rect.x*pix_size-rect.y*src_step src均为负,我认为x将指向未定义的内存。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

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

对于我来说,这种插值方案如下图所示: enter image description here  这篇文章等待更新,因为我认为应该发现更多细节。