OpenCV:设置ROI角度?

时间:2012-01-31 04:19:52

标签: opencv roi

我想使用ROI将图像中找到的多边形复制到新图像中。我希望这个多边形完全适合新图像。 到目前为止我使用的是投资回报率,但是我注意到没有考虑到这个角度,一旦我旋转了我要检测到的物体,就会给我带来不好的结果。我需要单独使用这个对象进行进一步分析......

以下是我的工作:

while(/****/)
{
    CvSeq* approximatedContour = cvApproxPoly(currentContour,
                                              sizeof(CvContour),
                                              0,
                                              CV_POLY_APPROX_DP,
                                              8);

    etiquetteBox = cvMinAreaRect2(approximatedContour);
    CvSize2D32f sizeEtiquette = etiquetteBox.size;

    if(/****/)
    {
        CvPoint2D32f boxPoints[4];
        cvBoxPoints(etiquetteBox, boxPoints);

        cvSetImageROI(thresImg,cvRect((int)boxPoints[1].x, (int)boxPoints[1].y,
                      (int)sizeEtiquette.width,(int)sizeEtiquette.height));

        cvResize(thresImg,thresImgResized);

        /*****/
    }

有谁知道如何将角度融入ROI?是否可以这样做?

谢谢!

1 个答案:

答案 0 :(得分:3)

您必须使用RotatedRect制作面具,然后使用面具复制图像。

修改

如何制作面具:

创建一个与原始图像大小相同但只有一个通道8U的新图像。 使用preffered方法将其设置为零。 使用优先绘制功能绘制您想要用作ROI的矩形,多边形,圆形或任何其他内容。 DrawPoly,例如。确保用255填充图形。 显示图像。它应该在黑色bacground上包含一个白色多边形。

将其用作遮罩参数。