OpenCV GPU SURF ROI error?
OpenCV GPU SURF ROI error?
我在win8.1 64位机器上使用VS2012 c++/CLI与OpenCV 3.0。
我正在尝试实现SURF的GPU版本。
当我不指定ROI时,我没有问题。因此,下面这行代码没有问题,可以检测整个图像中的关键点:
surf(*dImages->d_gpuGrayFrame,cuda::GpuMat(),Images->SurfKeypoints);
然而,指定ROI的努力会导致崩溃。例如,我通过上、左、下、右坐标指定ROI(我知道这在非gpu代码中有效)。在GPU代码中,如果ROI小于源图像本身,则会导致崩溃(如果ROI与源图像大小相同,则不会导致崩溃)。
int theight = (Images->LoadFrameClone.rows-Images->CropBottom) - Images->CropTop ;
int twidth = (Images->LoadFrameClone.cols-Images->CropRight)-Images->CropLeft ;
Rect tRect = Rect(Images->CropLeft,Images->CropTop,twidth,theight);
cuda::GpuMat tmask = cuda::GpuMat(*dImages->d_gpuGrayFrame,tRect);
surf(*dImages->d_gpuGrayFrame,tmask,Images->SurfKeypoints); // fails on this line
我知道tmask的大小非零,并且底层图像是正确的。据我所知,唯一的问题是在SURF GPU调用中指定ROI。知道为什么会这样吗?
谢谢
我在OpenCV 3.1中遇到了同样的问题。据推测,SURF算法不适用于通过设置ROI引入的具有步长或步幅的图像。我没有试过屏蔽,看看这是否有什么不同。
解决方法是将ROI复制到另一个相邻的GpuMat。内存到内存的复制在GPU上几乎是免费的(我的GTX780以142gb/秒的速度进行设备到设备的内存复制),这使得这种攻击不那么令人讨厌。
GpuMat src; // filled with some image
GpuMat srcRoi = GpuMat (src, roi); // roi within src
GpuMat dst;
srcRoi.copyTo (dst);
surf(dst, GpuMat(), KeypointsGpu, DescriptorsGpu);
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 从不同目录执行时"symbol lookup error:",否则从构建目录执行时按预期工作
- 对象声明中的模板"error: expected expression"
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 为什么我会"error: expected expression"?
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- OpenCV GPU SURF ROI error?