【问题标题】:OpenCV3.0 with cuda run time error: getGpuMat is available only for cuda::GpuMat带有 cuda 运行时错误的 OpenCV3.0:getGpuMat 仅适用于 cuda::GpuMat
【发布时间】:2017-07-20 21:06:09
【问题描述】:

这是我第一次使用 CUDA 运行 OpenCV3.0。问题是如果我在 opencv 源文件夹中运行示例代码(例如 test_features2d.cpp),我可以从 CUDA 函数中获得结果。但是,如果我创建一个独立程序并使用 CUDA 代码,它会发出运行时错误(它没有编译器错误): (我确实使用了 GPUMAT !!)

OpenCV 错误:功能/特性未实现(getGpuMat 是 仅适用于中心代码 hereuda::GpuMat 和 cuda::HostMem) 获取 GpuMat,文件 /home/lixx2938/opencv-3.0.0/modules/core/src/matrix.cpp,第 1433 行 在抛出“cv::Exception”实例后调用终止
什么():/home/lixx2938/opencv-3.0.0/modules/core/src/matrix.cpp:1433: 错误:(-213) getGpuMat 仅适用于 cuda::GpuMat 和 函数 getGpuMat 中的 cuda::HostMem

这是我主要功能的琐碎部分:

cv::Ptr<cv::cuda::ORB> orb = cv::cuda::ORB::create(200, 1.2, 4, 31, 0, 2, ORB::HARRIS_SCORE, 31, 20, true);

cv::Ptr<cv::cuda::FastFeatureDetector> fast = cv::cuda::FastFeatureDetector::create(threshold, nonmaxSuppression);

std::vector<cv::KeyPoint> fastkeypoints;

fast->detect(image, fastkeypoints);

std::vector<cv::KeyPoint> keypoints_cuda;

cv::cuda::GpuMat descriptors_cuda;

orb->detectAndCompute(image, noArray(), keypoints_cuda, descriptors2_gpu);

这是我的 cmake 文件

cmake_minimum_required(VERSION 2.8)

project( test )

find_package( OpenCV REQUIRED )

add_executable( test test.cpp )

target_link_libraries( test ${OpenCV_LIBS} )

我想我失去了一些标志。有谁知道我应该怎么做才能用 CUDA 运行 opencv 代码?

【问题讨论】:

  • 检查 make VERBOSE=1 是否真的缺少标志。

标签: opencv


【解决方案1】:

您需要将图像转换为灰度(因为 cuda detectAndCompute 方法只获取灰度图像)。然后将其上传到 GPU。所以总而言之,它应该是这样的:

cv::Mat image, imageGray;
cv::cuda::GpuMat imageGpu;
cv::cvtColor(image, imageGray, CV_BGR2GRAY);
imageGpu.upload(imageGray);
orb->detectAndComputeAsync(imageGpu, cuda::GpuMat(), keyPointsGpu, descKeyPointsImageGpu);

希望对你有帮助。

【讨论】:

    【解决方案2】:

    假设您的 image 变量是 GpuMat,它可能是您的 std::vector&lt;cv::KeyPoint&gt; keypoints_cuda;。我会尝试将其更改为 cv::cuda::GpuMat keypoints_cuda; 并再次对其进行测试。

    【讨论】:

      猜你喜欢
      • 2013-07-07
      • 1970-01-01
      • 2018-02-02
      • 2022-07-21
      • 1970-01-01
      • 2021-07-16
      • 2023-03-02
      • 2017-03-07
      • 2012-10-14
      相关资源
      最近更新 更多