使用cv2.floodfill()
时出现此错误:
我的代码:
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)
我试过
ormap.copy()
到新数组但不起作用cv2.cv.fromarray()
,但它表示'数据类型不受支持'。我正在使用OpenCV 2.4.11和numpy 1.11.0
还有其他建议吗?
答案 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