@Denq

Как с помощью OpenCV выделить контур с внутренней рамкой в изображении?

Вот изображение MzkL9.jpg

вот что я получаю FmEEr.jpg

def img_counter_max(image_file: str):
    img = cv2.imread(image_file)
    # grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # меняем цветовую модель с BGR на HSV
    cv2.waitKey(0)
    # binarize
    ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
    cv2.waitKey(0)
    # find contours
    ctrs, hier = cv2.findContours(thresh.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    # sort contours
    sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[0])
    # sorted_ctrs sorted(ctrs, key=cv2.contourArea, reverse=True)[0]
    contour_sizes = [(cv2.contourArea(contour), contour) for contour in sorted_ctrs]
    biggest_contour = max(contour_sizes, key=lambda x: x[0])[1]
    x, y, w, h = cv2.boundingRect(biggest_contour)
    roi = img[y:y + h, x:x + w]
    cv2.imwrite("C:\\Users\\dennn\\PycharmProjects\\untitled2\\imag\\roi1.jpg", roi)
    cv2.rectangle(img, (x, y), (x + w, y + h), (90, 255, 0), 2)
    from tensorflow.python import Size
    resize_img = cv2.resize(img, (512,512))
   # cv2.resize(img, Size(512,512), interpolation=cv2.INTER_AREA)
    cv2.namedWindow("Display frame", cv2.WINDOW_AUTOSIZE);
    cv2.imshow('Display frame', resize_img)
    cv2.waitKey(0)
   # cv2.imwrite("C:\\Users\\dennn\\PycharmProjects\\untitled2\\imag\\1.jpg", roi)


Я думал,что при повторном проходе,найду следующий контур,но нет...Как мне найти контур рамки с текстом, только ее (или выделить прямоугольник где текст)?
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы