Я использую python и openCV. Я хотел бы отделить дартс от фона. Я попробовал это с findContours и Canny edge detection, но я не мог этого сделать.Как отделить дартс от фона с помощью OpenCV?
Пример изображения:
Я использую python и openCV. Я хотел бы отделить дартс от фона. Я попробовал это с findContours и Canny edge detection, но я не мог этого сделать.Как отделить дартс от фона с помощью OpenCV?
Пример изображения:
Вы можете использовать grab-cut
алгоритм -
То, что вы должны сделать, это указать область изображения which'll выступать в качестве переднего плана в виде прямоугольника. Алгоритм займет немного времени и выкинет ваше требуемое изображение ... Код здесь требует небольшого количества настроек.
import numpy as np
import cv2
#a is your image
img = cv2.imread('a.jpg')
mask = np.zeros(img.shape[:2],np.uint8)
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
rect = (360,85,1670, 1900)
cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0),0,1).astype('uint8')
img = img*mask2[:,:,np.newaxis]
cv2.imshow('image',img)
cv2.waitKey(0)
Конечный результат в источнике даст вам лучший результат (после применения некоторых масок) ... Но, как я сказал, вы можете изменить его в соответствии с вашими желаниями.
http://docs.opencv.org/3.1.0/d8/d83/tutorial_py_grabcut.html#gsc.tab=0
Это не работает для меня. Python останавливается. – Gabe
Один из способов - изменить размер изображения перед применением grab-cut ...., это уменьшит размер изображения, тем самым уменьшив время работы алгоритма. – hashcode55
Размер не имеет значения, он продолжает выходить через несколько секунд (сила закрывается) – Gabe