opencv内存溢出del释放变量 (python)

报错:
cv2.error: OpenCV(3.4.17) D:\a\opencv-python\opencv-python\opencv\modules\core\src\alloc.cpp:73: error: (-4:Insufficient memory) Failed to allocate 12211548 bytes in function ‘cv::OutOfMemoryError’

检查内存代码

import psutil# 获取当前进程ID
pid = os.getpid()def print_program_memory(pid):# 创建Process对象process = psutil.Process(pid)# 获取内存信息mem_info = process.memory_info()print(f"当前进程占用内存(RSS): {mem_info.rss / 1024 ** 2:.2f} MB")print(f"当前进程虚拟内存(VMS): {mem_info.vms / 1024 ** 2:.2f} MB")# 或者使用更加简洁的方式直接获取 Resident Set Size (RSS)print(f"当前进程占用内存(RSS简化版): {process.memory_info().rss / 1024 ** 2:.2f} MB")

内存溢出代码:

for imagePath in target_files_path_list:print(imagePath)img = cv2.imread(imagePath)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

加入检查函数后,发现每次循环后内存容量都增大

分析原因:

  • 内存碎片:
    虽然每次循环变量都会被覆盖,但操作系统可能并未立即回收这部分内存,尤其是在大量分配和释放内存的过程中容易产生内存碎片,使得可用内存总量看似充足,但却难以分配连续的大块内存。

  • 图像数据缓存:
    OpenCV在处理图像时,可能在内部对原始图像数据进行了缓存,尤其是当图像较大时,即使img被重新赋值,之前图像的部分数据仍可能暂存在内存中,直到垃圾回收器有机会回收

解决:
del 回收变量

del img
del gray

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/716273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存空间担保机制

什么是内存空间担保机制? 内存空间担保机制(Memory Space Guarantee)是垃圾回收(Garbage Collection)算法中的一种策略。它用于在进行垃圾回收过程(如Minor GC或Full GC)时,确保老年…

Java项目layui分页中文乱码

【问题描述】这部分没改之前中文乱码。 【解决办法】在layui.js或者layui.all.js文件中替换共、页、条转换成Unicode码格式。 字符Unicode共&#x5171页&#x9875条&#x6761【完美解决】改完之后重新运行项目,浏览器F12缓存清除就好了,右键

MySQL的单表和多表查询

我们在前面曾构建过三个用于实验的表格,下面将基于这三个表进行实践。 # 建立一个用于实验的三个表格 mysql> create table emp (-> empno varchar(10),-> ename varchar(50),-> job varchar(50),-> mgr int,-> hiredate timestamp,-&…

课程表系列(BFS)

广度优先搜索 文章目录 广度优先搜索207. 课程表210. 课程表 II思路 630. 课程表 III1462. 课程表 IV547. 省份数量 207. 课程表 207. 课程表 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程…

c++11 标准模板(STL)(std::tuple)(三)

定义于头文件 <tuple> template< class... Types > class tuple; (C11 起) 类模板 std::tuple 是固定大小的异类值汇集。它是 std::pair 的推广。 若 (std::is_trivially_destructible_v<Types> && ...) 为 true &#xff0c;则 tuple 的析构函数是…

【AI绘画】免费GPU Tesla A100 32G算力部署Stable Diffusion

免责声明 在阅读和实践本文提供的内容之前&#xff0c;请注意以下免责声明&#xff1a; 侵权问题: 本文提供的信息仅供学习参考&#xff0c;不用做任何商业用途&#xff0c;如造成侵权&#xff0c;请私信我&#xff0c;我会立即删除&#xff0c;作者不对读者因使用本文所述方法…

Matlab 机器人工具箱 RobotArm类

文章目录 1 RobotArm1.1 方法1.2 注意2 RobotArm.RobotArm3 RobotArm.cmove4 其他官网:Robotics Toolbox - Peter Corke 1 RobotArm 串联机械臂类 1.1 方法 方法描述plot显示机器人的图形表示teach驱动物理和图形机器人mirror使用机器人作为从机来驱动图形</

深入了解Kafka的文件存储原理

Kafka简介 Kafka最初由Linkedin公司开发的分布式、分区的、多副本的、多订阅者的消息系统。它提供了类似于JMS的特性&#xff0c;但是在设计实现上完全不同&#xff0c;此外它并不是JMS规范的实现。kafka对消息保存是根据Topic进行归类&#xff0c;发送消息者称为Producer&…

IntelliJ IDEA 常用的插件

IntelliJ IDEA有很多常用的插件&#xff0c;这些插件可以扩展IDE的功能&#xff0c;提高开发效率。以下是一些常用的插件&#xff1a; Maven Helper&#xff1a;这是一款分析Maven依赖冲突的插件。在没有此插件时&#xff0c;查看Maven的依赖树和检查依赖包冲突可能需要输入命…

梯度下降算法(带你 原理 实践)

目录 一、引言 二、梯度下降算法的原理 三、梯度下降算法的实现 四、梯度下降算法的优缺点 优点&#xff1a; 缺点&#xff1a; 五、梯度下降算法的改进策略 1 随机梯度下降&#xff08;Stochastic Gradient Descent, SGD&#xff09; 2 批量梯度下降&#xff08;Batch…

LLM分布式训练第一课(通讯原语)

这个系列作为TFLOPS和显存消耗的续篇,今天开始正式连载 上一部地址: LLM 参数,显存,Tflops? 训练篇(5) (qq.com) 前一篇文章举了65B模型的训练所消耗的显存的案例,如果把条件降低一点,我们看一下7B的模型需要多少显存? 2byte的模型静态参数权重(以16bit存储) = 1…

(一)Python数据分析体系--九五小庞

课程地址&#xff1a;https://space.bilibili.com/387143299/channel/collectiondetail?sid554734 主要内容 知识体系 分析什么样的数据 为什么使用Python做数据分析 Python近几年的发展势头是有目共睹的&#xff0c;尤其是在科学计算&#xff0c;数据处理&#xff0c;A方面…

驾辰龙跨Llama持Wasm,玩转Yi模型迎新春

今年新年很特别&#xff0c;AI工具添光彩。今天就来感受下最新的AI神器天选组合“WasmEdgeYi-34B”&#xff0c;只要短短三步&#xff0c;为这个甲辰龙年带来一份九紫离火运的科技感。 环境准备 这次用的算力是OpenBayes提供的英伟达RTX_4090*1、24GB显存、20核CPU、80GB内存…

产品营销展示型wordpress外贸网站模板

工艺品wordpress外贸主题 简约大气的wordpress外贸主题&#xff0c;适合做工艺品进出品外贸的公司官网使用。 https://www.jianzhanpress.com/?p5377 餐饮设备wordpress外贸主题 简洁的wordpress外贸主题&#xff0c;适合食品机械、餐饮设备公司使用。 https://www.jianzh…

Linux 开发工具vim、gcc/g++、makefile

目录 Linux编辑器-vim 1. 基本概念 2. 基本操作 3. 正常模式命令集 4. 末行模式命令集 5. 其他操作 6. 简单vim配置 Linux编译器-gcc/g 1、基本概念 2、程序翻译的过程 3. gcc如何完成程序翻译 4、动静态库 Linux项目自动化构建工具-make/Makefile 1、背景 2、…

【Qt学习笔记】(四)Qt窗口

Qt窗口 1 菜单栏1.1 创建菜单栏1.2 在菜单栏中添加菜单1.3 创建菜单项1.4 在菜单项之间添加分割线1.5 给菜单项添加槽函数1.6 给菜单项添加快捷键 2 工具栏2.1 创建工具栏2.2 设置停靠位置2.3 设置浮动属性2.4 设置移动属性2.5 添加 Action 3 状态栏3.1 状态栏的创建3.2 在状态…

2024最新算法:冠豪猪优化算法(CPO)求解23个基准函数

一、冠豪猪优化算法 冠豪猪优化算法(Crested Porcupine Optimizer&#xff0c;CPO)由Mohamed Abdel-Basset等人于2024年提出&#xff0c;该算法模拟冠豪猪的四种不同保护机制&#xff1a;视觉、听觉、气味和物理攻击。第一和第二防御技术&#xff08;视觉和听觉&#xff09;反…

盘点 | IT行业哪些认证含金量高

微思网络 厦门微思网络 作为一名IT人员&#xff0c;谁没考几个证 ——值得考的证书拥有的特性 ▶ 获政府、企业和从业者认可&#xff1b; ▶ 持证人数多&#xff0c;业内共识度高&#xff1b; ▶ 帮持证者加分&#xff0c;快速提薪。 系统网络方向认证 01 华为认证 华为…

设计模式学习笔记 - 设计原则 - 7.DRY 原则及提高代码复用性

前言 DRY 原则&#xff0c;英文描述为&#xff1a; Don’t Repeat Yourself。中文直译&#xff1a;不要重复自己。将它应用在编程中&#xff0c;可理解为&#xff1a;不要写重读的代码。 可能你认为&#xff0c;这个原则很简单。只要两段代码长得一样&#xff0c;那就是违反 …

【机器学习】包裹式特征选择之递归特征消除法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…