首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV CascadeClassifier Python内存不足

OpenCV CascadeClassifier Python内存不足
EN

Stack Overflow用户
提问于 2018-05-21 19:29:28
回答 1查看 349关注 0票数 2

下面是我的代码:

代码语言:javascript
复制
def load_cascades():
    cascades = []
    for root, dirs, files in os.walk(rooted('data/logos')):
        for fname in files:
            if fname == 'cascade.xml':
                path = os.path.join(root, fname)
                cascade = cv2.CascadeClassifier(path)
                cascades.append(cascade)
    return cascades


cascades = load_cascades()


def get_heuristics(pair):
    url = pair[0]
    image = pair[1]
    matches_any_logos = False

    for cascade in cascades:
        frame = cv2.imread(image, 0)

        logos = cascade.detectMultiScale(
            image=frame,
            minNeighbors=5,
            minSize=(25, 25),
        )

        if len(logos) > 0:
            matches_any_logos = True

    return {
        'matches_any_logos': matches_any_logos,
        'matches_corresponding_urls': matches_corresponding_urls,
    }


class LogoDetectionVectorizer(DictVectorizer):

    def fit(self, x, y=None):
        x = [get_heuristics(v) for v in x]
        return super(LogoDetectionVectorizer, self).fit(x)

    def fit_transform(self, x, y=None):
        x = [get_heuristics(v) for v in x]
        return super(LogoDetectionVectorizer, self).fit_transform(x)

    def transform(self, x, y=None):
        x = [get_heuristics(v) for v in x]
        return super(LogoDetectionVectorizer, self).transform(x)

这是模型训练的机器学习算法中的一个模块,我有一组与我训练的徽标相关的训练模型,但是当我尝试在大型数据集上训练模型时,我得到了这个错误:

代码语言:javascript
复制
cv2.error: /io/opencv/modules/core/src/matrix.cpp:436: error: (-215) u != 0

opencv报告内存不足。我不明白为什么?我只是创建了一次所有的级联,然后多次使用它们,我发现我需要在每次迭代后调用cascade.deallocate(),然后重新创建级联,但是python声称cascade.desallocate()并不存在,而且每次都必须重新创建级联会带来明显的性能影响。

有人能帮帮忙吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-05-22 17:49:30

我找到了问题所在,在cascade.detectMultiScale之后我需要打电话给

代码语言:javascript
复制
del frame

由于某些原因,OpenCV在读取图像时不会释放内存,并且变量已超出范围,我在GitHub上报告了此内存泄漏

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50447893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档