0

我正在尝试在图像上创建一个矩形 ROI,其中某个像素的位置是矩形的中心。我该怎么做呢?

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 的中心?

预先感谢您提供的任何帮助。

4

3 回答 3

0

我之前在 c# 中做过,Image 类中有一个函数。名为“SetROI()”的方法,希望对你有帮助

于 2012-12-26T07:23:42.197 回答
0

使用以下代码创建一个以 x,y 为中心的 MxM 矩形。点 a,b 可以作为 OpenCV rect 函数中矩形的锚点

    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;
于 2012-12-26T08:38:03.383 回答
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);
于 2012-12-26T22:15:31.820 回答