1
私はpythonとopenCVを使用します。私はダーツボードをバックグラウンドから分離したいと思います。 findContoursとCannyのエッジ検出で試しましたが、できませんでした。OpenCVを使ってダーツボードをバックグラウンドから分離する方法は?
例の画像:
私はpythonとopenCVを使用します。私はダーツボードをバックグラウンドから分離したいと思います。 findContoursとCannyのエッジ検出で試しましたが、できませんでした。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
グラブカットを適用する前にイメージのサイズを変更する方法の1つは、イメージのサイズを減らし、アルゴリズムの実行時間を短縮することです。 – hashcode55
サイズは関係ありませんが、数秒後に終了します(強制的に閉じる) – Gabe