Image 无法在OpenCV中分配大型图像
我从一年前开始使用OpenCV 2.2.0进行图像处理 只有当我尝试分配一个大于2GB的IplImage时,才会出现内存分配错误,因为CvMat的分配是相同的。我可以使用CvMat分配我想要的任何内容,我也尝试了>10GB OpenCV是64位编译的,也是这个简单的应用程序。此外,我确信应用程序在64位模式下运行,正如我从任务管理器中看到的那样。操作系统(Windows7)也是64位的Image 无法在OpenCV中分配大型图像,image,memory-management,opencv,Image,Memory Management,Opencv,我从一年前开始使用OpenCV 2.2.0进行图像处理 只有当我尝试分配一个大于2GB的IplImage时,才会出现内存分配错误,因为CvMat的分配是相同的。我可以使用CvMat分配我想要的任何内容,我也尝试了>10GB OpenCV是64位编译的,也是这个简单的应用程序。此外,我确信应用程序在64位模式下运行,正如我从任务管理器中看到的那样。操作系统(Windows7)也是64位的 int main(int argc, char* argv[]) { printf("trying t
int main(int argc, char* argv[])
{
printf("trying to allocate >2GB matrix...\n");
CvMat *huge_matrix = cvCreateMat(40000,30000,CV_16UC1);
cvSet(huge_matrix,cvScalar(5));
printf("...done!\n\n");
system("PAUSE");
printf("trying to allocate >2GB image...\n");
IplImage *huge_img = cvCreateImage(cvSize(40000,30000),IPL_DEPTH_16U, 1);
cvSet(huge_img,cvScalar(5));
printf("...done!\n\n");
system("PAUSE");
cvReleaseMat(&huge_matrix);
cvReleaseImage(&huge_img);
}
错误消息是“内存不足:功能未知。。。这可能是一个bug吗?
IplImage
结构不支持大于2Gb的图像,因为它将图像总大小存储在int
类型字段中。即使您使用一些黑客将IplImage
分配到大于2Gb的空间,其他方法也无法正确处理它。OpenCV继承了英特尔图像处理库中的IplImage
结构,因此格式不可能更改
< >在C接口中使用新的结构(<代码> CVMAT < /代码>:<代码> CV::C++接口中的MAT)以巨大的图像操作。< /P>