Я пытаюсь создать прямоугольную область интереса на изображении с местоположением определенного пикселя, являющегося центром прямоугольника.
Как мне это сделать?
image= imread("C:\\image.png",1);
watermark=imread("C:\\watermark.png",0);
split(image,yuv_channels);
ROI=yuv_channels[0](Rect(100,100,watermark.cols,watermark.rows));
Как мне изменить его так, чтобы местоположение (100,100) было в центре ROI?
Заранее благодарю за любую оказанную помощь.
Используйте следующий код для создания прямоугольника MxM с центром в точке x, y. Точки a, b можно использовать в качестве опорных точек для прямоугольника в функции прямоугольника OpenCV
Point a;
Point b;
//MxM rectangle
a.x = x - M/2;
a.y = y - M/2;
b.x = x + M/2;
b.y = y + M/2;
Я сделал это на C # раньше, есть функция в классе Image. метод SetROI (), надеюсь, он вам пригодится
Я не уверен, понимаю ли я, но если вы просто хотите, чтобы точка (rect.x, rect.y) находилась посередине прямоугольника, просто используйте этот код:
Rect rect = Rect(100, 100, 234, 456);
rect -= Point(rect.width/2, rect.height/2)
или если вы хотите сделать это в одну строку:
Rect rect = Rect(100 - watermatk.cols/2, 100 - watermark.rows/2, watermark.cols, watermark.rows);