def stopDetect(image, hsv):
    stop_detected = False

    #Stop detection
    # lowerR = np.array(boundaryR[0][0], dtype='uint8')
    # upperR = np.array(boundaryR[0][1], dtype='uint8')

    kernel = np.ones((3, 3), np.uint8)
    maskR = cv2.inRange(hsv, lowerR, upperR)
    maskR = cv2.morphologyEx(maskR, cv2.MORPH_CLOSE, kernel)
    # maskR = cv2.morphologyEx(maskR, cv2.MORPH_OPEN, kernel)

    maskR_cnt, maskR_max_cnt, maskR_approx = geom.find_main_contour_approx(
        maskR)
    try:
        shapeR, thresh = detect(maskR_max_cnt, maskR)
        if shapeR == 'octagon' and cv2.countNonZero(maskR) > 1000:
            cv2.putText(image, 'STOP',
                        (image.shape[1] - 100, image.shape[0] - 20),
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
            stop_detected = True
    except:
        pass

    return image, stop_detected
def detect_stop_sign(image, boundaryR):
    lowerR = np.array(boundaryR[0][0], dtype='uint8')
    upperR = np.array(boundaryR[0][1], dtype='uint8')

    img = edge_enhancement(image)

    alpha = 1.5
    beta = 50
    res = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)

    hsv = cv2.cvtColor(res, cv2.COLOR_BGR2HSV)
    H, S, V = cv2.split(hsv)
    S = S + 50
    hsvR = cv2.merge((H, S, V))

    kernel = np.ones((3, 3), np.uint8)
    maskR = cv2.inRange(hsvR, lowerR, upperR)
    maskR = cv2.morphologyEx(maskR, cv2.MORPH_CLOSE, kernel)
    maskR = cv2.morphologyEx(maskR, cv2.MORPH_OPEN, kernel)
    cntR, max_cntR, approx_cntR = geom.find_main_contour_approx(maskR)
    try:
        shapeR, thresh = detect(max_cntR, maskR)
        if shapeR == 'octagon' and cv2.countNonZero(maskR) > 1000:
            cv2.putText(image, 'STOP',
                        (image.shape[1] - 100, image.shape[0] - 20),
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
    except:
        pass

    return image
cv2.imshow('green mask', maskG)

maskR = cv2.inRange(hsvR, lowerR, upperR)
maskR = cv2.morphologyEx(maskR, cv2.MORPH_CLOSE, kernel)
maskR = cv2.morphologyEx(maskR, cv2.MORPH_OPEN, kernel)
cv2.imshow('red mask', maskR)
# cv2.waitKey(0)

cntR, max_cntR, approx_cntR = geom.find_main_contour_approx(maskR)
cv2.drawContours(img, max_cntR, -1, (255, 0, 0), 2)
cv2.drawContours(img, approx_cntR, -1, (0, 255, 0), 2)
cv2.imshow('Red contours', img)
cv2.waitKey(0)
try:
    # maskR = cv2.morphologyEx(maskR, cv2.MORPH_CLOSE, kernel)
    shapeR, thresh = detect(max_cntR, maskR)
    if shapeR == 'octagon' and cv2.countNonZero(maskR) > 1000:
        cv2.putText(img_, 'STOP', (img_.shape[1]-100, img_.shape[0]-20), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
except:
    pass

maskG_cnt, _, maskG_approx = geom.find_main_contour_approx(maskG)
# try:
#     maskG_cnt = max(maskG_cnt, key=cv2.contourArea)
#     maskG_rect = cv2.minAreaRect(maskG_cnt)
#     # cntG, max_cntG, approx_cntG, rectG = geom.find_main_contour(maskG)
#     W = int(maskG_rect[1][0])
#     H = int(maskG_rect[1][1])
# except:
#     pass
W = 0