基于OpenCV的内存管理方法、装置及终端制造方法及图纸

技术编号:24012241 阅读:47 留言:0更新日期:2020-05-02 02:08
本发明专利技术适用于计算机技术领域,提供了一种基于OpenCV的内存管理方法、装置及终端,其中,所述基于OpenCV的内存管理方法包括:建立mat对象池,并在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储;从所述mat对象池中获取一个选定mat对象,将OpenCV获取到的图像数据分配到所述选定mat对象;对所述选定mat对象中的图像数据进行图像处理操作;图像处理完成后释放所述选定mat对象,并将所述选定mat对象重新放入所述mat对象池。本发明专利技术能够降低内存的占用,提高mat对象的读取和写入的速度,从而提升软件的稳定性。

Memory management method, device and terminal based on OpenCV

【技术实现步骤摘要】
基于OpenCV的内存管理方法、装置及终端
本专利技术属于计算机
,尤其涉及一种基于OpenCV的内存管理方法、装置及终端。
技术介绍
OpenCV是一个开源的计算机视觉和机器学习软件库,Mat对象是OpenCV中用来存储图像信息的内存对象,Mat对象中除了存储图像的像素数据以外,还包括图片的其他属性,具体为宽、高、类型、维度、大小、深度等。在通过OpenCV进行图像处理时,需要将图像转换成Mat对象,因此,在图像处理的过程中,需要高速频繁的缓存Mat对象,对内存管理要求严格,管理不当很容易造成应用缓慢、卡顿甚至崩溃。现有的针对OpenCV的内存管理方法包括两类,一类是在传统的c/c++开发语言中的手动分配和释放内存的管理方法,例如嵌入式的c/c++开发的程序;一类是自动内存管理,例如Java的基于堆的自动内存管理、.net的自动内存管理等。现有的基于OpenCV的内存管理方法存在如下问题:内存占用量大且不稳定,导致软件的稳定性较差。
技术实现思路
有鉴于此,本专利技术提供了一种基于OpenCV的内存管理方法、装置及终端,能够降低内存的占用,提高mat对象的读取和写入的速度,从而提升软件的稳定性。本专利技术实施例的第一方面提供了一种基于OpenCV的内存管理方法,包括:建立mat对象池,并在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储;从所述mat对象池中获取一个选定mat对象,将OpenCV获取到的图像数据分配到所述选定mat对象;对所述选定mat对象中的图像数据进行图像处理操作;图像处理完成后释放所述选定mat对象,并将所述选定mat对象重新放入所述mat对象池。本专利技术实施例的第二方面提供了一种基于OpenCV的内存管理装置,该装置包括:mat对象池建立单元,图像数据分配单元,图像处理单元和mat对象释放单元;所述mat对象池建立单元,用于建立mat对象池,并并在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储;所述图像数据分配单元,用于从所述mat对象池中获取一个选定mat对象,将OpenCV获取到的图像数据分配到所述选定mat对象;所述图像处理单元,用于对所述选定mat对象中的图像数据进行图像处理操作;所述mat对象释放单元,用于在图像处理完成后释放所述选定mat对象,并将所述选定mat对象重新放入所述mat对象池。本专利技术实施例的第三方面提供了一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如任一项所述基于OpenCV的内存管理方法的步骤。本专利技术实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如任一项所述基于OpenCV的内存管理方法的步骤。本专利技术与现有技术相比存在的有益效果是:本专利技术通过建立mat对象池,并在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储;从所述mat对象池中获取一个选定mat对象,将OpenCV获取到的图像数据分配到所述选定mat对象;对所述选定mat对象中的图像数据进行图像处理操作;图像处理完成后释放所述选定mat对象,并将所述选定mat对象重新放入所述mat对象池。能够降低内存的占用,提高mat对象的读取和写入的速度,从而提升软件的稳定性。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的基于OpenCV的内存管理方法的实现流程图;图2是本专利技术实施例提供的基于OpenCV的内存管理装置的结构示意图;图3是本专利技术实施例提供的终端的示意图。具体实施方式以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本专利技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本专利技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本专利技术的描述。为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图通过具体实施例来进行说明。参见图1,其示出了本专利技术实施例提供的基于OpenCV的内存管理方法的实现流程图,详述如下:S101,建立mat对象池,并在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储。可选的,采用如下方式建立mat对象池:第一步,定义matPool对象池;第二步,生成matPool池,伪代码如下:For(i=0;i<N;i++){mat=ByteBuffer.allocateDirect(1920*1080*3);将mat放入到对象池}可选的,OpenCV每秒获取N帧图像,所述预设数量大于等于N,可选的,在本专利技术实施例中,预设数量可设置为N,也可以设置为2N,N为正整数。可选的,通过mat=ByteBuffer.allocateDirect(X)对mat对象进行数据存储,其中,X为根据所述OpenCV获取到的图像的分辨率确定的预设值。举例来说,目前常见的视频规格一般为1080P@30fps、1080P@60fps、2160P@30fps等。图像处理常用的为1080P@30fps,即分辨率为1920*1080的图像,每秒中30帧画面。此时,N的值为30。以1080P@30fps规格的视频为例,OpenCV对每一帧图像采用一个Mat对象进行存储。可选的,根据图像的分辨率设置预设值X=1920*1080*3,则每一个Mat对象的内存大小为:1920*1080*3=6220800(字节),每秒中新增内存:6220800*30=186624000(字节)=177.978515625(兆字节)。使用DirectMemory数据存储技术存储Mat对象,可以改变传统的java中基于堆内存自动内存管理,减少堆内存使用,并提升Mat对象的读取和写入访问速度。S102,从所述mat对象池中获取一个选定mat对象,将OpenCV获取到的图像数据分配到所述选定mat对象。可选的,将OpenCV获取到的图像数据copyto到所述选定mat对象,使用copyTo的方式,可以重复利用mat池中的已有mat对象,杜绝使用new的方式动态分配mat对象。从而可以将mat对象的数量严格控制在N个。同时由于不需要java的GC进行动态内存的回收,从而可以将jvm本文档来自技高网...

【技术保护点】
1.一种基于OpenCV的内存管理方法,其特征在于,包括:/n建立mat对象池,并在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储;/n从所述mat对象池中获取一个选定mat对象,将OpenCV获取到的图像数据分配到所述选定mat对象;/n对所述选定mat对象中的图像数据进行图像处理操作;/n图像处理完成后释放所述选定mat对象,并将所述选定mat对象重新放入所述mat对象池。/n

【技术特征摘要】
1.一种基于OpenCV的内存管理方法,其特征在于,包括:
建立mat对象池,并在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储;
从所述mat对象池中获取一个选定mat对象,将OpenCV获取到的图像数据分配到所述选定mat对象;
对所述选定mat对象中的图像数据进行图像处理操作;
图像处理完成后释放所述选定mat对象,并将所述选定mat对象重新放入所述mat对象池。


2.根据权利要求1所述的一种基于OpenCV的内存管理方法,其特征在于,所述OpenCV每秒获取N帧图像,所述预设数量大于等于N,N为正整数。


3.根据权利要求1所述的一种基于OpenCV的内存管理方法,其特征在于,所述在所述mat对象池中通过直接内存DirectMemory的方式对预设数量的mat对象进行数据存储包括:
通过mat=ByteBuffer.allocateDirect(X)对mat对象进行数据存储,其中,X为根据所述OpenCV获取到的图像的分辨率确定的预设值。


4.根据权利要求1所述的一种基于OpenCV的内存管理方法,其特征在于,所述将OpenCV获取到的图像数据分配到所述选定mat对象包括:
将OpenCV获取到的图像数据copyto到所述选定mat对象。


5.一种基于OpenCV的内存管理装置,其特征在于,该装置包括:mat对象池建立单元,图像数据分配单元,图像处理单元和mat对象释放单元;
所述mat对象池建立单元,用于建立mat对象池,并并在所述mat对象池中通过直接内存DirectMe...

【专利技术属性】
技术研发人员:桂士金田永波张帅张林海张炳威王冬郭建飞
申请(专利权)人:河北万方中天科技有限公司
类型:发明
国别省市:河北;13

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1