我想使用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?是否可以这样做?
谢谢!
答案 0 :(得分:3)
您必须使用RotatedRect
制作面具,然后使用面具复制图像。
修改强>
如何制作面具:
创建一个与原始图像大小相同但只有一个通道8U的新图像。
使用preffered方法将其设置为零。
使用优先绘制功能绘制您想要用作ROI的矩形,多边形,圆形或任何其他内容。 DrawPoly
,例如。确保用255填充图形。
显示图像。它应该在黑色bacground上包含一个白色多边形。
将其用作遮罩参数。