当前位置:   article > 正文

【完美解决】OpenCVError: Insufficient memory (Failed to allocate xxx bytes) 报错的辛酸踩坑史_opencv failed to allocate

opencv failed to allocate

        本人自制的图像处理软件在测试时发现图像太大时(超过3840*2160像素)大概率会因内存分配不足而直接崩掉,一翻操作查阅得知是x86架构可分配的内存太小了,应该升级到x64。以下是作者开发工具的版本

Qt版本:5.11.3

openCV版本:4.1.0

编译器:mingw 5.3.0 32bit

【x64和x86】

windows x64和x32,都是用来形容操作系统的,所以我们在下载操作系统的时候,会存在winx64和x86位系统的选择。

  而不同位数的操作系统,对CPU的运算方式产生的影响或者要求亦不同,所以从更深层次的角度来说,windows64和32位是指CPU运算方式的差异。

  windows x64和x86最主要的区别:

  很多人之所以关注windows x64和x86的差异,是因为32位系统最多只能发挥4G内存的效用,如果电脑安装了大于4G的内存,32位的操作系统是不能更好的利用大于4G的那部分内存的效用的,所以会造成资源浪费。

  而64位的操作系统,按照微软对系统的设定,家庭版本的win7可以最多支持16G的内存,而专业版和旗舰版的win7最多支持的内存容量可达192G内存。

要升级为x64架构首先openCV的库必须是x64的并且编译器也是64位,如果没有已经编译好的可用x64版本的OpenCV库就自己手动编译一个,本文主要针对Qt creator的64位环境搭建

【下载64位的mingw】         这里存在第一个坑就是下载的mingw就算是64位的,如果不支持posix的话可以编译Qt源码但是编译openCV依然会报错,并且调用编译好的openCV库也会报错,例如:'Mutex' is not a member of 'cv' ,如果电脑已经安装mingw并且已经配置好环境变量可以打开cmd输入 gcc -v查看当前编译器版本

 如果enable-threads = win32或其他说明不可用,可以下载作者的版本【踩坑无数亲测有效】

百度云链接:https://pan.baidu.com/s/1GpWMZ8owLBYgbGobDINxYg 
提取码:tb5i

解压在一个没有中文和空格的路径(笔者解压到了Qt的目录下),配置好环境变量,如果环境变量下有其他mingw版本可以先删掉,直到cmd能看到上图所示的提示

 【编译openCV源码】

链接直达:https://www.wpsshop.cn/w/木道寻08/article/detail/954851

推荐阅读
相关标签
  

闽ICP备14008679号