【发布时间】:2015-05-17 19:57:28
【问题描述】:
我正在研究一种在 GPU 上完成许多计算的算法。我主要使用 oclMat 结构,并试图避免从 CPU 复制到 GPU,反之亦然,但我找不到简单的方法:
- 将 ocl 矩阵中的所有元素与特定的单个值(例如浮点数或双精度值)进行比较,并根据该值创建逻辑矩阵
- 创建一个给定大小和类型的 oclMat 矩阵,并将所有元素初始化为特定值(例如,所有元素都是浮点数且等于 1.234567)
例如:
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我知道它是怎么做的)。
我认为存在一个简单的解决方法,但还没有找到...谢谢!
【问题讨论】: