簡體   English   中英

如何使用 python 和 opencv 在圖像上繪制兩個輪廓,它們之間的輪廓距離為 100 像素

[英]How can I draw two contours on an image given a contour distance of 100 pixels between them using python and opencv

我嘗試過的是使用以下幾行繪制外部輪廓

cnts, hierarchy = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

cv2.drawContours(orig, cnts, -1, (0, 255, 0), 3) # this draws the external contour

參考下面的 [![在此處輸入圖像描述][1]][1]

我怎樣才能得出下面的答案?

[![在此處輸入圖像描述][2]][2]

我不知道它是如何在鏈接中解決的,但您可以使用一個空白蒙版,您可以在其上繪制輪廓,然后使用cv2.dilate使用它們之間所需像素數的內核大小來擴展它。 完成后,在蒙版上找到輪廓並將第二個輪廓繪制到原始圖像上。

import cv2
import numpy as np

img = cv2.imread('contour.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
cnts, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, cnts, -1, (0, 255, 0), 3)
mask = np.zeros(img.shape[:2], dtype=np.uint8)
cv2.drawContours(mask, cnts, -1, 255, 1)
kernel = np.ones((100, 100), np.uint8)
mask = cv2.dilate(mask, kernel, iterations = 1)
cnts, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, cnts, 1, (255, 0, 0), 3)
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM