저는 파이썬 바인딩을 통해 grab cut 메서드의 OpenCV 구현을 사용하려고했습니다. 나는 cv2와 cv2 모두에서 버전을 사용하려했지만 제대로 실행되도록 메소드를 얻는 데 사용할 올바른 매개 변수를 찾는 데 어려움을 겪고있다. 매개 변수의 여러 순열을 시도했지만 아무 것도 작동하지 않습니다 (기본적으로 Github에서 본 모든 예). 다음은 몇 가지 예는 내가 따라 시도됩니다GrabCut 알고리즘을위한 OpenCV Python 바인딩
을 그리고 여기에 방법의 설명서 및 알려진 버그 보고서입니다 :
코드를 실행할 수 있습니다. 아래 예제를 보자. 그러나 빈 (모두 검은 색) 이미지 마스크를 반환한다.
img = Image("pills.png")
mask = img.getEmpty(1)
bgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
fgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
for i in range(0, 13*5):
cv.SetReal2D(fgModel, 0, i, 0)
cv.SetReal2D(bgModel, 0, i, 0)
rect = (150,70,170,220)
tmp1 = np.zeros((1, 13 * 5))
tmp2 = np.zeros((1, 13 * 5))
cv.GrabCut(img.getBitmap(),mask,rect,tmp1,tmp2,5,cv.GC_INIT_WITH_RECT)
이미지를로드하는 데 SimpleCV를 사용하고 있습니다. 마스크의 종류와 img.getBitmap (의 리턴 타입)입니다
iplimage(nChannels=1 width=730 height=530 widthStep=732)
iplimage(nChannels=3 width=730 height=530 widthStep=2192)
사람이 내가 그것을보고 싶어요이 코드의 작업 예제가있는 경우. 가치가있는 것을 위해 나는 OSX Snow Leopard를 사용하고 OpenCV의 내 버전은 SVN 저장소에서 설치되었습니다 (몇 주 전). 참고로 내 입력 이미지는 다음과 같습니다.
결과 마스크 열거 형 값을 더 눈에 보이는 값으로 변경하려고했습니다. 문제의 반환 값이 아닙니다. 이렇게하면 완전히 검은 색 이미지가 반환됩니다. 나는 몇 가지 더 많은 가치들을 시도 할 것이다.
img = Image("pills.png")
mask = img.getEmpty(1)
bgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
fgModel = cv.CreateMat(1, 13*5, cv.CV_64FC1)
for i in range(0, 13*5):
cv.SetReal2D(fgModel, 0, i, 0)
cv.SetReal2D(bgModel, 0, i, 0)
rect = (150,70,170,220)
tmp1 = np.zeros((1, 13 * 5))
tmp2 = np.zeros((1, 13 * 5))
cv.GrabCut(img.getBitmap(), mask, rect, tmp1, tmp2, 5, cv.GC_INIT_WITH_MASK)
mask[mask == cv.GC_BGD] = 0
mask[mask == cv.GC_PR_BGD] = 0
mask[mask == cv.GC_FGD] = 255
mask[mask == cv.GC_PR_FGD] = 255
result = Image(mask)
result.show()
result.save("result.png")
예를 주 스레드로 옮겼습니다. – kscottz