You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS环境下Python调用cv2.imshow出现内存泄漏问题的求助

macOS环境下Python调用cv2.imshow出现内存泄漏问题的求助

大家好,我遇到了一个在macOS上用Python调用OpenCV的cv2.imshow时出现内存泄漏的问题,想请教下有没有人能帮忙复现这个问题、分析背后的原因,以及提供解决或规避的方法?

我的测试环境

我在两台不同的机器上都测试过,都出现了同样的内存泄漏现象:

  • 第一台机器:
    • macOS 10.12 和 10.13
    • Python 3.8.10
    • OpenCV 3.4.18
    • NumPy 1.24.4
  • 第二台机器:
    • Python 3.9.1
    • OpenCV 4.10.0
    • NumPy 2.02

问题排查过程

我做了几个测试来定位问题:

  • 最初的现象是,每次循环迭代(也就是每次更新图像并显示时),Python进程的内存占用都会增加,增加的量和图像的大小直接相关。
  • 当我把图像缩小后再显示:添加了small = cv2.resize(img,(640,360)),并把显示语句改成cv2.imshow('Image',small),内存增长的幅度就变得小很多。
  • 后来我在imshow调用前加了continue语句,完全跳过图像显示的步骤,这时候内存占用基本保持稳定,没有明显的增长。
  • 基于这些测试,我判断内存泄漏的问题应该是和cv2.imshow函数直接相关的。

测试代码

下面是我用来复现问题的代码:

import cv2, numpy as np

flag = False

while True:
    img = np.zeros((2160,3840,3),np.uint8)
    if flag:
        img = cv2.circle(img, (1920,1080),128,(255,255,255),-1)
    flag = not flag
    cv2.imshow('Image',img)
    k = cv2.waitKey()
    cv2.destroyAllWindows()
    if k == 27:
        break

备注:内容来源于stack exchange,提问作者user2268171

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:08:05