shadow_removal.py 文件源码

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

项目:vehicle_detection 作者: AuzanMuh 项目源码 文件源码
def hsvPassShadowRemoval(src, shadowThreshold):
    blurLevel = 3
    height, width = src.shape[:2]
    imgHSV = cv2.cvtColor(src, cv2.COLOR_RGB2HSV)
    gaussianBlur = cv2.GaussianBlur(imgHSV, (blurLevel, blurLevel), 0)
    hueImg, satImg, valImg = cv2.split(gaussianBlur)

    NSVDI = np.zeros((height, width, 1), np.uint8)
    count = height * width
    with np.errstate(divide='ignore'):
        # for i in range(0, height):
        #    for j in range(0, width):
        #       sat = int(satImg[i, j])
        #       val = int(valImg[i, j])
        #       NSVDI[i, j] = (satImg[i, j] - valImg[i, j]) / ((satImg[i, j] + valImg[i, j]) * 1.0)
        NSVDI = (satImg + valImg) / ((satImg - valImg) * 1)
    thresh = np.sum(NSVDI)
    avg = thresh / (count * 1.0)

    # for i in range(0, height):
    #    for j in range(0, width):
    #       if NSVDI[i, j] >= 0.25:
    #           hueImg[i, j] = 255
    #           satImg[i, j] = 255
    #           valImg[i, j] = 255
    #       else:
    #           hueImg[i, j] = 0
    #           satImg[i, j] = 0
    #           valImg[i, j] = 0

    if shadowThreshold is None:
        avg = avg
    else:
        avg = shadowThreshold

    np.where(NSVDI > avg, 255, 0)
    _, threshold = cv2.threshold(NSVDI, avg, 255, cv2.THRESH_BINARY_INV)

    output = threshold
    return output
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号