我正在尝试使用 openCV 在我的 NVidia GPU 上实现计算机视觉算法。我正在使用 openCV 2.4,我目前正在编写非常简单的程序来习惯 openCV。我编写了一个简单的转置矩阵代码,并在 GPU 上实现了精明的边缘检测。该程序运行良好,但我需要释放 CPU 和 GPU 中的内存。所以我在下面发布我的代码:
int main(int argc,char *argv[])
{
int k;
cv::Mat src;
cv::Mat dest;
cv::Mat dest_1;
cv::gpu::GpuMat im_source;
cv::gpu::GpuMat im_dest;
cv::gpu::GpuMat im_dest_1;
cv::gpu::Stream::Null;
k = cv::gpu :: getCudaEnabledDeviceCount();
printf("%d\n",k);
src = cv::imread("lena.jpg",0);
cv::imshow("lena_org",src);
im_source.upload(src);
cv::gpu::transpose(im_source,im_dest);
im_dest.download(dest);
cv::imshow("lena_trans",dest);
cv::gpu::Canny(im_source,im_dest_1,100,100,3,false);
im_dest_1.download(dest_1);
cv::imshow("lena_edge",dest_1);
cv::waitKey();
}
因此,从上面的代码中,我相信 CPU 和 GPU 中的内存都没有被释放。我在网上搜索了一下,发现 cv::Mat::Release 用于 cpu 和 cv::gpu::GpuMat::Release 用于 GPU 端。但我不知道如何使用它们或我应该如何在我的代码中使用这些函数,以便我可以释放我的 CPU 和 GPU 内存。如果有人可以指导我正确使用 Release api 以便我可以成功释放内存,那将非常有帮助。感谢您的支持。