Я недавно читаю код cv::getRectSubPix
в OpenCV, который включает нанесение прямоугольников из изображения.Конкретно, я застрял на функции 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
будет указывать на неопределенную память, если оба значения x
и y
отрицательны.Кто-нибудь может помочь?