我正在尝试将 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 项目:
- 创建了指向 OpenCV 构建文件夹的系统级环境变量 $(OPENCV_DIR)
- 在我添加的项目属性中:
- 所有配置:
- C/C++ -> 常规 -> 附加包含目录
$(OPENCV_DIR)\include
- 链接器 -> 常规 -> 附加库目录
$(OPENCV_DIR)\x64\vc15\lib
在这里和下面,我更改了 vc## 文件夹以反射(reflect)我使用的是 VS2017 - 调试 -> 环境
PATH=$(OPENCV_DIR)\x64\vc15\bin;%PATH%
- 在配置管理器中...
- 将事件解决方案平台设置为 x64
- 调试:
- 链接器 -> 输入 -> 附加依赖项
opencv_world410d.lib
- 发布:
- 链接器 -> 输入 -> 附加依赖项
opencv_world410.lib
如果我尝试使用 cv::cuda::resize(...)
进行编译我得到 namespace "cv::cuda" has not member "resize"
的编译错误.相反,如果我尝试使用它在该 namespace 中看到的功能之一,例如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 吗?
最佳答案
确保包含正确的头文件。在你的情况下 cudawarping.hpp 应该是正确的。您很可能也喜欢做一些矩阵运算,因此您需要包含 cudaarithm.hpp 。
#include <opencv2/cudaarithm.hpp>
#include "opencv2/cudawarping.hpp"
这是调整大小的 api 文档:Documentation
希望对你有帮助
关于c++ - OpenCV CUDA 函数缺失 - 命名空间 "cv:cuda"没有成员 "resize",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891952/