OpenCV - python中的cv2.floodFill()错误

时间:2016-05-03 23:43:41

标签: python opencv flood-fill

使用cv2.floodfill()时出现此错误:

enter image description here

我的代码:

    ormap = np.bitwise_or(label,detmap)
    mask = np.zeros((image_size+2,imagesize+2),np.uint8)
    for y in range(image_size):
        for x in range(image_size):
            if label[y,x]>0:
                cv2.floodFill(ormap,mask,(y,x),0)

我试过

  1. ormap.copy()到新数组但不起作用
  2. 使用cv2.cv.fromarray(),但它表示'数据类型不受支持'。
  3. 我正在使用OpenCV 2.4.11和numpy 1.11.0
    还有其他建议吗?

2 个答案:

答案 0 :(得分:0)

通过执行以下更改解决:

ormap = np.bitwise_or(label,detmap).astype(uint8)

答案 1 :(得分:0)

这是另一个 opencv floodfill 函数,它可能有助于防止您的 ROI 被分割为白色斑点。假设您使用过 Otsu 阈值法:

def flood_fill_binary(binary):
    hh = binary.shape[0]
    ww = binary.shape[1]
    xx = 10
    yy = 10
    black = [0,0,0]
    binary = cv2.copyMakeBorder(binary,10,10,10,10,cv2.BORDER_CONSTANT,value=black)
    im_floodfill = binary.copy()
    h, w = binary.shape[:2]
    mask = np.zeros((h+2, w+2), np.uint8)
    cv2.floodFill(im_floodfill, mask, (0,0), 255)
    im_floodfill_inv = cv2.bitwise_not(im_floodfill)
    im_out = binary | im_floodfill_inv
    crop_og = im_out[yy:yy+hh,xx:xx+ww]
    return crop_og