使用cv2 findContours,图像的轮廓显得很草率。如何提高?

时间:2019-04-09 12:46:00

标签: python opencv cv2

我正在尝试使用cv2查找图像的轮廓。有很多相关的问题,但是答案似乎总是非常具体,不适用于我的情况。

我有一张黑白图像,然后变成彩色。

thresh = cv2.cvtColor(thresh, cv2.COLOR_RGB2GRAY) 
plt.imshow(thresh)

enter image description here

接下来,我尝试找到轮廓。

image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

然后我将其绘制在黑色背景上进行可视化。

blank_image = np.zeros((thresh.shape[0],thresh.shape[1],3), np.uint8) 
img = cv2.drawContours(blank_image, contours, 0, (255,255,255), 3)
plt.imshow(img)

Contour image

轮廓遵循实际轮廓,即围绕整个物体。我如何获得这种非常糟糕的油漆印象:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用Canny边缘检测来做到这一点:

enter image description here

import cv2
frame = cv2.imread("iCyrOT3.png")                       # read a frame
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)          # turn it gray
edges = cv2.Canny(gray, 100, 200)                       # get canny edges
cv2.imshow('Test', edges)                               # display the result
cv2.waitKey(0)