首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >opencl clCreateImage clCreateImage2D

opencl clCreateImage clCreateImage2D
EN

Stack Overflow用户
提问于 2014-01-15 18:17:06
回答 3查看 5.1K关注 0票数 3

我是使用C++的OpenCl的新手,我正在尝试创建一个图像的cl_mem,但我无法让它工作:

首先,我像这样使用clCreateImage2D:

代码语言:javascript
运行
复制
Mat image=imread("pic.jpg",CV_32FC1);
int width = image.rows;
int height = image.cols;

char *buffer = reinterpret_cast<char *>(image.data);

cl_image_format clImageFormat;
    clImageFormat.image_channel_order = CL_INTENSITY ;
    clImageFormat.image_channel_data_type = CL_FLOAT;
cl_mem Image2DBuffer =clCreateImage2D(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, &clImageFormat, width,height,0,buffer,&error);

但是它没有编译,Visual Studio2012给了我这样的错误:"error C4996:'clCreateImage2D':it deprecated“。

我寻找了一个解决方案,发现OpenCL 1.2已经用clCreateImage2D和clCreateImage3D代替了clCreateImage (或者至少我是这么理解的),所以我修改了以下代码:

代码语言:javascript
运行
复制
cl_image_desc image_desc;
    image_desc.image_type = CL_MEM_OBJECT_IMAGE2D;
    image_desc.image_width = width;
    image_desc.image_height = height;
    image_desc.image_array_size = 1;
    image_desc.image_row_pitch = 0;
    image_desc.image_slice_pitch = 0;
    image_desc.num_mip_levels = 0;
    image_desc.num_samples = 0;
    image_desc.buffer = NULL;

cl_mem ImageBuffer=clCreateImage(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, &clImageFormat, &image_desc, buffer,&error);

但是程序在最后一行崩溃了(0x0000000000000000处未处理的异常),我不知道为什么。

如果有人能帮上忙,我将不胜感激。我想我写了所有你可能需要了解这个问题的东西,但如果有什么东西遗漏了,请让我知道,我会提供额外的信息。

EN

Stack Overflow用户

发布于 2014-01-27 03:25:40

下面的代码适用于VS12,AMD APP SDK v2。使用第一个分配标志,我的图形处理器使用共享内存,所以我选择CL_MEM_ALLOC_HOST_PTR。

代码语言:javascript
运行
复制
//Let image constructor select row pitch
std::size_t row_pitch = 0, rows = 768, cols = 1024;

Mat image(rows, cols, CV_32F, cv::Scalar(0.0f));
try{
    cl::Image2D img(context, CL_MEM_ALLOC_HOST_PTR | CL_MEM_COPY_HOST_PTR, cl::ImageFormat(CL_LUMINANCE, CL_FLOAT), image.cols, image.rows, row_pitch, (void*)image.data);
}catch(cl::Error &e){
    cerr <<e.what()<<endl;
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21134677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档