我正在尝试将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_DIR)\include
$(OPENCV_DIR)\x64\vc15\lib
在这里和下面,我更改了vc ##文件夹以反映我正在使用VS2017 PATH=$(OPENCV_DIR)\x64\vc15\bin;%PATH%
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吗?
答案 0 :(得分:1)
确保包含正确的头文件。在您的情况下, cudawarping.hpp 应该是正确的。您最有可能还希望执行一些矩阵运算,因此您需要包含 cudaarithm.hpp 。
#include <opencv2/cudaarithm.hpp>
#include "opencv2/cudawarping.hpp"
以下是要调整大小的api文档:Documentation
希望有帮助...