OpenCV не принимает ndarray для TextDecectorCNN.detect () - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь использовать этот класс OpenCV текстового детектора, чтобы выяснить, могу ли я использовать его для своего проекта. Я загружаю изображение следующим образом:

src = cv2.imread(img_path)

И затем я пытаюсь использовать функцию, упомянутую ранее, вот так:

bbox, confidence = cv2.text_TextDetectorCNN.detect(src)

Но этот код падает со следующей ошибкой:

TypeError: descriptor 'detect' for 'cv2.text_TextDetectorCNN' objects doesn't apply to a 'numpy.ndarray' object

Я уже пытался использовать image = cv2.cvtColor(src, cv2.COLOR_BGR2RGB, cv2.CV_8UC3), но он ничего не делает - image остается ndarray.

UPD: прикрепление всего кода и проблемной c картинки.

import os


# borrowed from https://github.com/lengstrom/fast-style-transfer/blob/master/src/utils.py
def list_images(in_path, formats=[".jpg", ".jpeg", ".gif", ".png", ".pgm", ".bmp"]):
    img_files = []
    for (dirpath, _, filenames) in os.walk(in_path):
        for file in filenames:
            _, ext = os.path.splitext(file)
            ext = str.lower(ext)
            if ext in formats:
                img_files.append(os.path.join(dirpath, file))
    return img_files


def test_accuracy(folder_path):
    image_list = list_images(folder_path)
    for img_path in image_list:
        src = cv2.imread(img_path)
        bbox, confidence = cv2.text_TextDetectorCNN.detect(src)
        print(img_path, bbox, confidence) # To check format of output

Протестированное изображение: image_1 (я тестировал 3 разных .jpg изображения, ни одно из них не работало)

Вопрос: есть ли способ преобразовать ndarray в какой-нибудь формат OpenCV, который будет принят упомянутой функцией?

1 Ответ

0 голосов
/ 21 апреля 2020

Ваша проблема в том, что вы не создаете экземпляр вашего текстового детектора. Смотрите это:

import cv2
import numpy as np 

# After downloading the caffemodel and
# textbox.prototxt you have to create
# an instance of your model
textSpotter = cv2.text.TextDetectorCNN_create(
    "textbox.prototxt", "TextBoxes_icdar13.caffemodel"
)
src = cv2.imread("1.png")
bbox, confidence = textSpotter.detect(src)
print("HELLO", bbox, confidence)  # To check format of output
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...