【问题标题】:How can I use Mat's data pointer to create a GPUMat entity?如何使用 Mat 的数据指针创建 GPUMat 实体?
【发布时间】:2017-10-17 20:03:28
【问题描述】:

如何使用 Mat 的指针来创建 GPUMat 实体?

以下我的实现是错误的。

#include<opencv2/opencv.hpp>

#include "opencv2/gpu/gpu.hpp"
//using namespace cv;
int main()
{
    //Mat img = imread();
    cv::Mat mSource = cv::imread("C:\\New Folder\\1.jpg");
    cv::gpu::GpuMat gpuInput(mSource.rows, mSource.cols, CV_32FC1, mSource.data, cv::Mat::AUTO_STEP);       

    cv::gpu::GpuMat  mGTarget;
    cv::gpu::resize(gpuInput, mGTarget, cv::Size(0, 0), 0.5, 0.5);

    cv::Mat mTarget;
    mGTarget.download(mTarget);

    cv::imwrite("C:\\New Folder\\5.jpg", mTarget);
}

【问题讨论】:

标签: opencv


【解决方案1】:

使用GpuMat::uploadGpuMat::download 函数。 upload 函数以cv::Mat 为参数,将主机数据上传到设备。

GpuMat gpuInput;
gpuInput.upload(mSource);

【讨论】:

  • @md612 你到底为什么要这么做?
  • 我有一个类似的应用程序有同样的问题 -- stackoverflow.com/questions/46658100/….
  • @md612 解码帧很可能是单通道 YUV 帧,并且您提供 CV_8UC3 作为图像类型。您必须确定解码帧的类型。
猜你喜欢
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2015-03-03
  • 2021-01-04
  • 1970-01-01
相关资源
最近更新 更多