gpt4 book ai didi

compiler-errors - 如何从opencv gpumat创建推力device_vector

转载 作者:行者123 更新时间:2023-12-02 10:44:01 26 4
gpt4 key购买 nike

我需要将opencv::gpumat转换为推力:: device_vector,然后执行一下推力:: copy_if,然后将生成的推力:: device_vector再次复制到cv::gpumat。

如何从cv::gpumat转换为推力:: device_vector,反之亦然?

我的代码(如下)给出了编译错误:
错误:预期类型说明符

gcc(Ubuntu 5.4.0-6ubuntu1〜16.04.10)5.4.0 20160609

nvcc:Cuda编译工具,版本8.0,V8.0.44

推力v1.8

Ubuntu 16.04

我的代码:

#include <thrust/random.h>

#include <thrust/device_ptr.h>
#include <thrust/device_vector.h>

#include <opencv2/core/cuda.hpp>

int main(void)
{
cv::Mat input_host(1,100,CV_32F);
cv::Mat output_host(1,100,CV_32F);

cv::randu(input_host, cv::Scalar(-10), cv::Scalar(10));
cv::cuda::GpuMat input_device(1, 100, CV_32F);
input_device.upload(input_host);

thrust::device_ptr<CV_32F> input_ptr(input_device.ptr());

thrust::device_vector<CV_32F> input_device_vector (input_ptr,100);
return 0;
}

最佳答案

How to convert from cv::gpumat to thrust::device_vector ....



无法做到这一点。 Thrust并未公开从现有指针构造 device_vector的机制。复制构造是可以从现有数据中实例化 device_vector的唯一方法。

.... & vice-versa?



可以这样做:
  • device_vector转换为原始指针(请参阅here)
  • 从原始指针创建一个openCV gpumat实例(请参见here)

  • 请注意,如果让 device_vector超出范围,则将调用其析构函数,并且将释放支持它的内存(以及使用同一内存的其他任何对象),并且您处于未定义的行为范围内。

    关于compiler-errors - 如何从opencv gpumat创建推力device_vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52799955/

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