Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
205 views
in Technique[技术] by (71.8m points)

python - Draw and fill a polygon from 2 lines using openCV

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...