Я получаю сообщение об ошибке, когда я использую opencv (python) для рисования ограничительной рамки на изображении - PullRequest
0 голосов
/ 12 марта 2019

окружающая среда:

питон: 3.6.3

opencv: 3.4.2

Windows 10

Я хочу нарисовать ограничивающую рамку для изображения, код следующий:

def draw_rect(img, bboxes):
    # img = img.copy()
    for bbox in list(bboxes[:, :4]):
        bbox = [int(float(co)) for co in bbox]
        bbox[2] += bbox[0]
        bbox[3] += bbox[1]
        cv2.rectangle(img, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 255, 0), 4)
    cv2.imshow('hh', img)
    cv2.waitKey(0)

img = cv2.imread(r'E:\dataset\steel\train_dataset\0B4F3CC3.jpg')

bboxes = [[123, 124, 500, 500], [200, 200, 400, 400]]
# img = img[:, :, ::-1]   # simple transform

draw_rect(img, np.array(bboxes))

этот код работает нормально, но когда я даю простое преобразование перед рисованием bbox.

def draw_rect(img, bboxes):
    # img = img.copy()
    for bbox in list(bboxes[:, :4]):
        bbox = [int(float(co)) for co in bbox]
        bbox[2] += bbox[0]
        bbox[3] += bbox[1]
        cv2.rectangle(img, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 255, 0), 4)
    cv2.imshow('hh', img)
    cv2.waitKey(0)

img = cv2.imread(r'E:\dataset\steel\train_dataset\0B4F3CC3.jpg')

bboxes = [[123, 124, 500, 500], [200, 200, 400, 400]]


img = img[:, :, ::-1]   # simple transform


draw_rect(img, np.array(bboxes))

Запустите приведенный выше код, в окне отображается только изображение, без каких-либо ограничений.

но когда я добавляю код img = img.copy() следующим образом:

def draw_rect(img, bboxes):
    img = img.copy()
    for bbox in list(bboxes[:, :4]):
        bbox = [int(float(co)) for co in bbox]
        bbox[2] += bbox[0]
        bbox[3] += bbox[1]
        cv2.rectangle(img, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 255, 0), 4)
    cv2.imshow('hh', img)
    cv2.waitKey(0)

img = cv2.imread(r'E:\dataset\steel\train_dataset\0B4F3CC3.jpg')

bboxes = [[123, 124, 500, 500], [200, 200, 400, 400]]
img = img[:, :, ::-1]   # simple transform

draw_rect(img, np.array(bboxes))

все идет хорошо. Так в чем же причина этого явления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...