首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV OCL逻辑索引

OpenCV OCL逻辑索引
EN

Stack Overflow用户
提问于 2015-05-17 19:57:28
回答 1查看 299关注 0票数 0

我正在研究一种算法,在GPU上做了很多计算。我主要使用oclMat结构,并试图避免从CPU复制到GPU,反之亦然,但我无法找到一种简单的方法:

  1. 将ocl矩阵中的所有元素与特定的单个值(例如浮点数或双值)进行比较,并根据以下情况创建逻辑矩阵
  2. 创建一个具有给定大小的oclMat矩阵,并使用所有元素初始化为特定值的类型(例如,所有元素都是浮动的,等于1.234567)

例如:

代码语言:javascript
复制
cv::ocl::oclMat M1 =...
// DO STUFF WITH M1
cv::ocl::oclMat logicalM1 = M1>1.55; // compare directly to a single value
cv::ocl::oclMat logicalM2 = ... ; // i.e. I want a 100x100 CV_32FC1 matrix with all elements set to be equal to 1.234567

通过阅读文档,似乎使用cv::ocl::compare只适用于相同维度和类型的两个矩阵,所以我的第一个请求可能是不可行的。另一方面,我不知道如何在ocl中直接初始化特定的矩阵(使用cv::Mat,我知道它是如何实现的)。

我想有个简单的解决办法,但还没找到.谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-05-17 21:43:59

你是正确的。看起来cv::ocl::compare在输入上只支持两个cv::oclMat。但是,您可以创建包含特定值的oclMat,如下所示:

代码语言:javascript
复制
cv::ocl::oclMat logicalM2(M1.size(), M1.type);
logicalM2.setTo(cv::Scalar(1.234567));
cv::ocl::oclMat logicalM1;
cv::ocl::compare(M1, logicalM2, logicalM1, cv::CMP_GT);

另外,我建议您尝试使用透明的OpenCV 3.0,这使得在GPU上使用OpenCL的处理更加容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30291509

复制
相关文章

相似问题

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