Привязки OpenCV Python для алгоритма GrabCut

Я пытался использовать реализацию OpenCV метода захвата через привязки Python. Я пытался использовать версию как в cv, так и в cv2, но у меня возникли проблемы с поиском правильных параметров, которые будут использоваться для правильной работы метода. Я пробовал несколько перестановок параметров, но ничего не работает (в основном, каждый пример, который я видел на Github). Вот пара примеров, которым я пытался следовать:

Пример 1

Пример 2

А вот документация метода и известное сообщение об ошибке:

Документация

Известная ошибка Grabcut

Я могу получить код для выполнения, используя приведенный ниже пример, но он возвращает пустую (полностью черную) маску изображения.

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")

Ответы на вопрос(2)

Ваш ответ на вопрос