【问题标题】:How to remove border of microsoft word in text image in opencv with python?如何使用python在opencv中删除文本图像中的microsoft word边框?
【发布时间】: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 的帮助

标签: python opencv


【解决方案1】:

我认为最简单的方法是像您一样使用 ROI。

cv::Mat workingRegion = img(cv::Rect(x_coord,y_coord,width,height), img.type());

在使用 microsoft online 等软件创建的图像中,边框始终位于图像的同一部分。你可以把它剪掉。

要检测边界,我会使用 OTSU 阈值

cv::threshold(img,img,100,255, CV_THRESH_OTSU);

我会产生更好的结果。添加一些图片,以便我可以更好地帮助您。

【讨论】:

  • 你是对的,我必须知道微软在线边框之类的软件,然后在 x 和 y 上加一个数字,谢谢帮助它工作
猜你喜欢
  • 2020-03-07
  • 2018-11-16
  • 2021-12-18
  • 2022-01-07
  • 2015-06-10
  • 2021-11-16
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多