detect.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:ShadowRemoval 作者: Orcuslc 项目源码 文件源码
def detect(img, seed):
    seed = (seed[1], seed[0])
    shape = get_size(img)
    [Ms, Ml, Mshadow] = [np.zeros(shape, dtype=np.uint8) for i in range(3)]
    tmp = np.array(img)
    for i in range(DOWNSAMPLE):
        img_ds = downsample(tmp)
        tmp = img_ds
    seed_ds = (int(seed[0]*RATE**DOWNSAMPLE), int(seed[1]*RATE**DOWNSAMPLE))
    seed_pixel = img_ds[seed_ds]
    shape_ds = (int(shape[0]*RATE**DOWNSAMPLE), int(shape[1]*RATE**DOWNSAMPLE))
    edges = cv2.Canny(cv2.GaussianBlur(img, (3, 3), 0), CANNY[0], CANNY[1])
    seed_mask_ds = np.zeros(get_size(img_ds))
    seed_mask_ds[seed_ds] = 1
    vis = np.zeros(get_size(img_ds))
    directions = ((1, 0), (0, 1), (-1, 0), (0, -1))
    def search(point, seed_pixel):
        if point[0] < 0 or point[1] < 0 or point[0] >= shape_ds[0] or point[1] >= shape_ds[1]:
            return
        if vis[point]:
            return
        elif edges[point]:
            return
        elif(dist(img_ds[point], seed_pixel) < COL_SEED):
            vis[point] = 1
            seed_mask_ds[point] = 1
            for i in range(4):
                search((point[0]+directions[i][0], point[1]+directions[i][1]), seed_pixel)
    for i in range(SEED_ITER):
        search(seed_ds, seed_pixel)
        seed_pixel = np.mean(np.mean(img_ds[np.where(seed_mask_ds == 1)], axis = 0), axis = 0)
    return seed_ds
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号