OpenCV CUDA 函数缺失 - 命名空间"cv::cuda"中没有成员"resize"。

3
我正在尝试使用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,但没有resize……?
我改编了旧的OpenCV 3(?ish;在这里https://www.opencv-srf.com/p/introduction.html)在线教程来设置我的VS项目:
1. 创建一个指向OpenCV构建文件夹的系统级环境变量$(OPENCV_DIR); 2. 在项目属性中添加: - 所有配置: - C/C++ -> 常规 -> 附加包含目录 $(OPENCV_DIR)\include - 链接器 -> 常规 -> 附加库目录 $(OPENCV_DIR)\x64\vc15\lib(在此处及以下,我更改了vc##文件夹,以反映我使用的是VS2017) - 调试 -> 环境 PATH=$(OPENCV_DIR)\x64\vc15\bin;%PATH% - 在“配置管理器”中: - 将活动解决方案平台设置为x64 - 调试: - 链接器 -> 输入 -> 附加依赖项 opencv_world410d.lib - 发行: - 链接器 -> 输入 -> 附加依赖项 opencv_world410.lib 如果我尝试使用cv::cuda::resize(...)编译,则会出现编译错误namespace "cv::cuda" 没有成员 "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个回答

1

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

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

这是有关调整大小的API文档:文档
希望能对您有所帮助...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接