Opencv 旋转矩形ROI

 1     Mat mark = Mat::zeros(img.size(), CV_8UC1);
 2     RotatedRect rRect(center, Size(200, 50), -45);
 3     Point2f rRectPoint[4];
 4     rRect.points(rRectPoint);
 5     for (int i =0; i < 4; i++)
 6     {
 7         line(mark, rRectPoint[i], rRectPoint[(i+1)%4], Scalar(255));
 8     }
 9     floodFill(mark, center, 255, nullptr);  //  255像素填充旋转矩形
10     Mat markImg;
11     bitwise_and(grayImg, mark, markImg);

效果如下:

 

当图片旋转的时候,用旋转矩形ROI代码如上。

也有想过用其他方法,比如先旋转图片,再绘制矩形ROI,这种方法会调用warpAffine(),如果图片过大,耗费时间特别多,例如45度旋转一个600*500的图像就需要70ms左右时间。

还有另一种方法,先抠图再旋转,实测扣个300*300矩形旋转45度要30ms,也是很浪费时间。

最开始的方法,绘制旋转矩形再填充图片,只需要1ms不到的时间。

posted @ 2021-08-19 20:31  补码  阅读(1275)  评论(0编辑  收藏  举报