从图像上切出倾斜的矩形

时间:2018-09-16 14:40:27

标签: python python-3.x opencv

我已经编写了将轮廓绘制到图像上的代码。我已经成功完成了这一部分。现在,我进一步想删掉那一部分。

在这里,问题是我的轮廓(检测到的对象)是一个倾斜的矩形。我知道如何使用以下方法切出直线矩形:

frame[200:300, 200:300] # Where frame is the image

但是,就我而言,这行不通。

因此,总而言之,我的代码生成了一个倾斜的矩形(您可以在下图中看到),我想将其切出并保存(如果可能,最好将其拉直)。

到目前为止,我的代码是用openCV-2python-3编写的,并且我的机器是基于Linux的机器(Ubuntu-16.04

我在下面提供了我的代码(以防万一,有人想重现这种情况,然后尝试解决问题)。

import cv2
import numpy as np

im = cv2.imread('Maze6.png')
gaus = cv2.GaussianBlur(im, (5, 5), 1)
#mask1 = cv2.dilate(gaus, np.ones((15, 15), np.uint8, 3))
mask2 = cv2.erode(gaus, np.ones((5, 5), np.uint8, 1))
imgray = cv2.cvtColor(mask2, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

maxArea1=0
maxI1=0

for i in range(len(contours)):
    area = cv2.contourArea(contours[i])
    epsilon =  cv2.arcLength(contours[i], True)
    approx = cv2.approxPolyDP(contours[i], epsilon, True)
    if area > maxArea1 :
        maxArea1 = area

print(maxArea1)
print(maxI1)
cv2.drawContours(im, contours, maxI1, (0,0,255), 3)

cv2.imshow("yay",im)
cv2.imshow("gray",imgray)
cv2.waitKey(0)

cv2.destroyAllWindows()

在Stack Overflow或任何文档中,我还没有找到解决方案。如果您发现了一些东西,那么链接也会很有帮助。感谢所有帮助!

0 个答案:

没有答案