gpt4 book ai didi

image - 无法在 OpenCV 中分配大图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:39 27 4
gpt4 key购买 nike

一年以来,我一直致力于使用 OpenCV 2.2.0 进行图像处理。

只有当我尝试分配 >2GB 的 IplImage 时,我才会收到内存分配错误,因为与 CvMat 的分配相同。我可以使用 CvMat 分配任何我想要的东西,我也尝试过 >10 GB。

OpenCV 是 64 位编译的,也是这个简单的应用程序。此外,我确定应用程序以 64 位模式运行,正如我从任务管理器中看到的那样。操作系统(Windows 7) 也是 64 位的。

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);
}

错误消息是“内存不足:在未知函数中...这可能是一个错误吗?

最佳答案

IplImage 结构不支持大于 2Gb 的图像,因为它在 int 类型的字段中存储总图像大小。即使您使用一些 hack 分配大于 2Gb 的 IplImage,其他方法也无法正确处理它。 OpenCV 从 Intel 图像处理库继承了 IplImage 结构,因此不会更改格式。

您应该使用较新的结构(C 接口(interface)中的 CvMat 或 C++ 接口(interface)中的 cv::Mat)来处理大图像。

关于image - 无法在 OpenCV 中分配大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com