从图像中删除小注释

时间:2016-03-24 15:12:06

标签: python image image-processing

我正在尝试使用Python从图表中删除小图像。作为一个例子,我附上一些图表,其中包含一些' +'和' - '注释它。我不希望他们在那里,但不想手动删除它们,因为有很多要经过。有没有简单的方法来检测和删除它们?

Graph with annotations

1 个答案:

答案 0 :(得分:2)

我会给你一个使用blob分析的解决方案,因为我几乎已经准备好了,但是会要求你自己进行阅读和解释,因为你没有花太多时间在你自己的代码上。也许它有帮助。

结果图片:

Resulting image

import numpy as np
import cv2

imgray = cv2.imread('image.png')


#### Blob analysis
# SimpleBlobDetector will find black blobs on white surface
ret,imthresh = cv2.threshold(imgray,160, 255,type=cv2.THRESH_BINARY)

# Remove small breaks in lines
kernel = np.ones((3,3),np.uint8)
imthresh=cv2.erode(imthresh,kernel, iterations=1)

# Setup SimpleBlobDetector parameters.
params = cv2.SimpleBlobDetector_Params()

# Filter by Area.
params.filterByArea = True
params.minArea = 0
params.maxArea =350

# Don't filter by Circularity
params.filterByCircularity = False

# Don't filter by Convexity
params.filterByConvexity = False

# Don't filter by Inertia
params.filterByInertia = False


# Create a detector with the parameters
detector = cv2.SimpleBlobDetector_create(params)

# Detect blobs.
keypoints = detector.detect(imthresh)

# Draw detected blobs as red circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures
# the size of the circle corresponds to the size of blob
im_with_keypoints = cv2.drawKeypoints(imthresh, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# Show blobs
cv2.imshow("Keypoints", im_with_keypoints)

cv2.imshow('threshold',imthresh)

cv2.waitKey(0)
cv2.destroyAllWindows()