OpenCV CUDA功能缺失-名称空间“ cv:cuda”没有成员“调整大小”

时间:2019-04-28 15:50:53

标签: c++ opencv visual-c++

我正在尝试将OpenCV 4.1与CUDA 10一起使用,以调整许多大型tif堆栈的大小,但是VS2017在库中看不到函数resize。对cv::cuda库的子集感到满意,但看不到此处列出的所有功能:https://docs.opencv.org/4.1.0/d1/d1a/namespacecv_1_1cuda.html

我包括了#include <opencv2/opencv.hpp>,并且Intellisense向我展示了cuda::PtrSz, registerPageLocked, resetDevice, setBufferPoolConfig的自动完成功能,但是没有调整大小...?

我在线修改了旧的OpenCV 3(?ish;这里https://www.opencv-srf.com/p/introduction.html)教程来设置我的VS项目:

  1. 创建了指向OpenCV构建文件夹的系统级环境变量$(OPENCV_DIR)
  2. 在项目属性中,我添加了:
    • 所有配置:
    • C / C ++->常规->其他包含目录$(OPENCV_DIR)\include
    • 链接器->常规->其他LibraryDirectory $(OPENCV_DIR)\x64\vc15\lib 在这里和下面,我更改了vc ##文件夹以反映我正在使用VS2017
    • 调试->环境PATH=$(OPENCV_DIR)\x64\vc15\bin;%PATH%
    • 在Configuration Manager中...
    • 将Active解决方案平台设置为x64
    • 调试:
    • 链接器->输入->其他依赖项opencv_world410d.lib
    • 发布:
    • 链接器->输入->其他依赖项opencv_world410.lib

如果我尝试使用cv::cuda::resize(...)进行编译,则会收到namespace "cv::cuda" has not member "resize"的编译错误。相反,如果我尝试使用它在该名称空间中看到的功能之一,例如std::cout << "CUDA device count: " << cuda::getCudaEnabledDeviceCount();输出CUDA device count: 0并尝试类似std::cout << "CUDA device: " << cuda::getDevice();的操作会产生以下错误: OpenCV(4.1.0) Error: No CUDA support (The library is compiled without CUDA support) in throw_no_cuda, file c:\build\master_winpack-build-win64-vc15\opencv\modules\core\include\opencv2\core\private.cuda.hpp, line 107

我很困惑,首先,为什么它只看到该cv :: cuda名称空间中可用功能的子集,其次,为什么我没有CUDA支持? 我需要先在机器上编译OpenCV吗?

1 个答案:

答案 0 :(得分:1)

确保包含正确的头文件。在您的情况下, cudawarping.hpp 应该是正确的。您最有可能还希望执行一些矩阵运算,因此您需要包含 cudaarithm.hpp

#include <opencv2/cudaarithm.hpp>
#include "opencv2/cudawarping.hpp"

以下是要调整大小的api文档:Documentation

希望有帮助...