Opencv在python中裁剪出平行四边形图像

时间:2016-06-20 03:11:37

标签: python image opencv image-processing

我正在使用Python和Opencv。我现在正在进行牌照识别项目。我现在可以认出这样的盘子了:

enter image description here

我得到了一个"阵列"像这样:

<ion-slide-box on-slide-changed="vm.slideHasChanged($index)">
  <ion-slide>
    <div class="slide-box">
      // Content that is less than 100vh
    </div>
  </ion-slide>
  <ion-slide>
      // Content that is more than 100vh
  </ion-slide>
</ion-slide-box>

问题是:如何使用这些坐标裁剪出绑定区域?

由于四个corrdinates被置换并且它不是一个矩形,所以我不知道如何裁掉它。

1 个答案:

答案 0 :(得分:0)

您可以裁剪内部矩形或外部边界矩形。让四个坐标为: -

(x1,y1),(x2,y2)

(x3,y3),(x4,y4)

假设您对外边界矩形感兴趣,因此没有字母被分段,您可以使用以下ROI进行简单裁剪。

int topLeftX = min(x1,x3);
int topLeftY = min(y1, y2);
int width = max(x2, x4) - topLeftX;
int height = max(y3, y4) - topLeftY;
cv::Rect outerRoi(topLeftX, topLeftY, width, height);
cv::Mat roiImage = image(outerRoi); //Note that this will not create a deep copy

如果对从内部适合梯形的最大矩形感兴趣,你应该用最大值交换min,反之亦然。

如果你想要一个像roi这样的梯形,你应该创建一个蒙版图像。如需进一步说明,请参阅copying non-rectangular roi opencv