I have a picture with 2 curves and multiple small lines which can be interpreted as noise.
Input
I need to create a polygon with these curves and fill them with white like the output below :
Desired Output
I tried the following code :
import cv2
from google.colab.patches import cv2_imshow
from google.colab import drive
import numpy as np
filePath = '/gdrive/My Drive/teste17.png'
image = cv2.imread(filePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2_imshow(image)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
coords = np.column_stack(np.where(thresh > 0))
c2=np.stack((coords[:,1], coords[:,0]), axis=-1)
cv2.fillPoly(image, [c2], (255, 0, 0))
cv2_imshow(image)
But the output was a bit different from what I wanted :
Output
Is there a better approach using openCV ? Any suggestions is appreciated.
question from:
https://stackoverflow.com/questions/65836729/draw-and-fill-a-polygon-from-2-lines-using-opencv 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…