已经成功实现通过opencv的GpuMat对象用nVidia的GPU来生成tensor,代码如下:
cv::cuda::GpuMat gpu_frame;
gpu_frame.upload(frame);
auto options = torch::TensorOptions().dtype(torch::kFloat32).device(torch::kCUDA, 0);
auto tensor = torch::from_blob(gpu_frame.data, {1, gpu_frame.rows, gpu_frame.cols, gpu_frame.channels()}, options);
但是现在想用AMD的GPU来生成tensor,因为opencv不支持AMD的GPU生成GpuMat对象,所以只能通过openCL来生成oclMat对象代替GpuMat。
根据网上查的资料,要生成oclMat对象的话需要在构建opencv的时候指定WITH_OPENCL=ON,也照做了,构建完opencv之后编译下面的文件时报错。
运行的代码:
cv::ocl::oclMat ocl_frame;
报错:
oclMat is not a member of cv::ocl
可是我已经在构建opencv的时候指定WITH_OPENCL=ON了,运行命令“clinfo”也正常显示opencl使用AMD的GPU的信息。
还是说我创建oclMat的方法不对呢?
好像opencv2.4之后就不支持oclMat了,需要换成UMat,现在用UMat也是问题一堆就是了...