/ / Wyodrębnianie wysp o innym kolorze na obrazie za pomocą OpenCV - python, opencv, przetwarzanie obrazu, opencv-contour

Wykrywanie wysp o różnych kolorach na obrazie z OpenCV - python, opencv, przetwarzanie obrazu, kontur opencv

Załóżmy, że mam obraz z jednym koloremtło (powiedzmy czarne), które ma wiele „wysp” o innym kolorze. Wyobraź sobie czarne tło z czerwonymi, żółtymi i zielonymi plamami koloru rozrzuconymi po całym. Chcę program, który narysuje kontur wokół wszystkich tych łat. Używam opencv z python. Znalazłem już program do rysowania konturu, jeśli kolor jest predefiniowany. Jeśli nie, co mogę zrobić? I nie ma specyficznego kształtu, który mógłby zepsuć te łatki.

Odpowiedzi:

2 dla odpowiedzi № 1
import cv2
import numpy as np

img=cv2.imread("img.jpg")
edges = cv2.Canny(img,100,200)

_,contours,hierarchy = cv2.findContours(edges, 1, 2)
for cnt in contours:
(x,y),radius = cv2.minEnclosingCircle(cnt)
center = (int(x),int(y))
radius = int(radius)
cv2.circle(img,center,radius,(255,255,255),2)

cv2.imshow("Detected!",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

wprowadź opis obrazu tutaj