在c++中使用OpenCV设置一个给定中心像素值的矩形ROI



我正试图在图像上创建一个矩形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的中心?

提前感谢您提供的任何帮助。

使用下面的代码创建一个以x,y为中心的MxM矩形。点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()',希望对大家有所帮助

我不确定我是否理解,但如果你只是想使点(矩形。x,矩形。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);

相关内容

  • 没有找到相关文章

最新更新