删除图像轮廓

时间:2019-08-07 16:14:28

标签: python opencv

我正在尝试根据以下条件去除不需要的轮廓。

  1. X值必须在0 <= x <=图片宽度
  2. 范围内
  3. Y值必须等于0或图像高度
  4. 轮廓的高度应在0 <= h <= 30
  5. 的范围内

规则的目标是找到出现在图像绝对顶部和底部的轮廓。这是两张图片以供说明。

这些图像来自一个较大的图像。将它们分成两个单独的图像后,剩下的部分字符需要删除。它们落在“新”图像的顶部和底部。使用outlook = win32com.client.DispatchWithEvents("Outlook.Application", Handler_Class).GetNamespace("MAPI").Folders.Item("Shared") 函数显示我要删除的区域。我的问题是,我还得到了不遵循红色箭头指示的上述规则的区域。

这是我正在使用的代码。

cv2.rectangle

图片1

enter image description here

图片2

enter image description here

编辑:

搜索了更多内容并阅读了opencv文档后,我设法解决了这个问题。我使用contours, hierarchy = cv2.findContours(word, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for contour in contours: x, y, w, h = cv2.boundingRect(contour) # top contours if (0 <= x <= word.shape[1] and y == 0): if (0 <= h <= 30): word[y:y + h, x:x + w] = 0 # bottom contours if (0 <= x <= word.shape[1] and y+h == word.shape[0]): if (0 <= h <= 30): word[y:y + h, x:x + w] = 0 制作了相同大小的新图像,然后使用np.zeros(word.shape[:2], dtype=word.dtype)根据上面列出的标准绘制了轮廓。最后,我使用cv2.drawContours

从新创建的图像中减去了原始图像

1 个答案:

答案 0 :(得分:0)

问题的根源是底部图像中的“ ryth”是所有已连接的组件,而“ y”接触底部边缘。也许首先使用形态学运算符来侵蚀文本-这可能会导致字母停止彼此渗入。