обработка изображений — установка прямоугольной области интереса с учетом значения центрального пикселя с помощью OpenCV в переполнении стека

Я пытаюсь создать прямоугольную область интереса на изображении с местоположением определенного пикселя, являющегося центром прямоугольника.
Как мне это сделать?

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?

Заранее благодарю за любую оказанную помощь.

0

Решение

Используйте следующий код для создания прямоугольника 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;
0

Другие решения

Я сделал это на C # раньше, есть функция в классе Image. метод SetROI (), надеюсь, он вам пригодится

0

Я не уверен, понимаю ли я, но если вы просто хотите, чтобы точка (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);
0
По вопросам рекламы [email protected]