【发布时间】:2017-10-17 12:13:45
【问题描述】:
我有这张由 Microsoft word office 制作的边框图片:
我想删除 Microsoft Word Office 制作的边框,如下所示:
我尝试了这段代码,但没有工作:
img = cv2.imread('border.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)
_,contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[0]
x, y, w, h = cv2.boundingRect(cnt)
crop = img[y:y + h, x:x + w]
cv2.imwrite('border.png', crop)
cv2.imshow("Rotated", crop)
cv2.waitKey(0)
那么我如何通过 opencv 和 python 做到这一点?
【问题讨论】:
-
您了解您的代码的作用吗?如果是这样,应该很容易看出为什么它在您的示例图像中不起作用
-
我建议一步一步来。哪一步没有做它应该做的事情?例如,你有没有显示轮廓?还是阈值图像?我建议你先看阈值,看看它是否显示你想要的,然后显示轮廓,这是外边界吗?最后,边界矩形将围绕所有轮廓(包括轮廓),您需要将 x 和 y 更改为 x+10 或类似的东西,然后将 w 更改为 w-10。这样,它将是内部而不是外部。 10只是一个例子,这个数字你必须算出来
-
你说得对,我必须在 x 和 y 上加一个数字,谢谢@api55 的帮助