2017-09-14 138 views
0

我这个图像上工作的确切轮廓检测(OpenCV的,蟒蛇):无法找到

我用下面的代码:

input_img = cv2.imread(input_image) 
img = cv2.imread(input_image, 0) 

kernel = np.ones((5,5),np.uint8) 
# morphological_img = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel) 
# # morphological_img = cv2.threshold(morphological_img, morphological_img, 128, 255, cv2.THRESH_BINARY_INV) 
# # img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) 

# morphological_img = cv2.medianBlur(morphological_img, 5) 


canny_img = cv2.Canny(input_img, 100, 200) 
_, contours, hierarchy = cv2.findContours(canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # get contours 

,并得到这些轮廓:

我已经试过人l这些功能如模糊,阈值等,但我没有得到我期待的轮廓。我需要找到像容器一样的黑色轮廓和紫色轮廓,但是我得到的是围绕文本的轮廓,而不是它们的背景容器。

对不起,我的英语不好。如果您需要其他东西,请询问。

+0

看到https://stackoverflow.com/a/43283990/5294258 – sturkmen

+0

@sturkmen感谢您的评论....同样的问题,我注意到有....它的发现在前景不考虑轮廓背景颜色变化的轮廓....... –

+0

对不起,我没有仔细阅读你的问题。你可以在图像上显示想要的结果。 – sturkmen

回答

1

我研究了很多思考,它可以帮助别人谁是停留在同样的问题后,回答我的问题。

由于问题就在这里......我们是不是能够找到背景的容器,但所有本技术(如阈值,模糊等)......我是不是能够得到。

所以,采取的办法是添加边框(大小= 10或以上都可以),选择颜色中不存在图像中会给你你需要的所有轮廓。

bordersize = 10 
img = cv2.copyMakeBorder(img, top=bordersize, bottom=bordersize, left=bordersize, right=bordersize, borderType= cv2.BORDER_CONSTANT, value=[247, 248, 188])