2015-06-20 25 views
0

对于它的生活,我不能让CUDA模块在Visual Studio 2013 64Bit Professional,CUDA SDK 6.5和Win7 64Bit的OpenCV3.0 Beta下工作。我使用的示例代码在半年前使用OpenCV3.0 Alpha完美无瑕地工作。现在我甚至不能让cv :: cuda :: flip工作;该代码可以工作,直到它将Mat上传到CUDA,然后停止工作。无法让CUDA模块在OpenCV 3.0下工作Beta Beta

有人可以提供一个工作示例代码,所以我可以看到我在哪里俯视的东西?我做

所有的步骤之前:

与CUDA和OpenGL建设OpenCV3.0Beta后用CMake和MSVC2013专业使我建OpenCV.sln在调试和发布/ X64配置(这表示成功打造:266每)。之后,我在modules/smaples/include和data-folder中的Debug/Release X64-Config中分别创建INSTALL.vcxproj,以便将它们全部复制到安装文件夹。

在属性C++一般:

d:\ OpenCV的\ GebautmitCUDAohneTBB \安装\包括 d:\程序\ GLEW-1.12.0 \包括 d:\程序\ freeglut \包括

下属性链接一般:

d:\ OpenCV的\ GebautmitCUDAohneTBB \安装\ 64 \ VC12 \ LIB d:\程序\ GLEW-1.12.0 \ LIB \发布\ x64的 d:\程序\ freeglut \ LIB \ 64

在属性链接器输入:

通常OpenCV的-库, glew32.lib, freeglut.lib

这里我举的例子代码:

#if defined _MSC_VER && _MSC_VER >= 1400 
#pragma warning(disable : 4100) 
#endif 

#include <iostream> 
#include <iomanip> 
#include "opencv2/objdetect/objdetect.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/core/cuda.hpp" 
#include "opencv2/cudaimgproc.hpp" 
#include "opencv2/cudawarping.hpp" 

using namespace std; 
using namespace cv; 
using namespace cv::cuda; 

int main() { 
/* 
if (getCudaEnabledDeviceCount() == 0) 
{ 
return cerr << "No GPU found or the library is compiled without CUDA support" << endl, -1; 
} 

cv::cuda::printShortCudaDeviceInfo(cv::cuda::getDevice()); 
*/ 
Mat image, image2, imagedownloaded, demoimage, grayimage; 

image = imread("fruits.jpg", 1); 

if (image.channels() == 1) 
{ 
    cout << "1 channel"; 
} 
else 
{ 
    cout << "3 channel"; 
} 

cv::cvtColor(image, image, COLOR_BGR2GRAY); 

GpuMat image_gpu, gray_gpu, demo_gpu, image_gpu2; 

image_gpu2.upload(image); 

cv::cuda::demosaicing(image_gpu2, demo_gpu, COLOR_BayerGR2BGR, 3); 

demo_gpu.download(demoimage); 

if (demoimage.channels() == 1) 
{ 
    cout << "1 channel"; 
} 
else 
{ 
    cout << "3 channel"; 
} 

imshow("bla2", image); 
imshow("bla3", demoimage); 
waitKey(); 
return 0; 

} 

能有人请指出什么我忘了,所以它会再次工作?

谢谢。

回答

0

我找到了我的问题的解决方案: 我发现我的代码和opencv-gpu-samples不工作大约1分钟,但是在那之后它的工作完美无缺。所以我在谷歌搜索这个问题,发现,这是必须的情况下,CUDA显然需要在运行时再次编译代码,以便让他们的Cubin/PTX文件在GPU上正常工作(我对它的理解)。

所以我查看了我的CMake-Configuration(来自Opencv/Source的标准配置),它只是用Arch-Bins 1.0-3.0构建OpenCV-CUDA-Config,而我有一个具有5.2计算能力的GTX970。

改变后的CMake-CUDA拱斌和PTX-设定为5.0,建筑用OpenCV的CUDA和OpenGL再次,CUDA运行得很好,与预期的速度:) 也为OpenCV的使用CUDA的构建时下降(因为只有一个Arch-Bin/PTX-Build-Setting)从2小时到25分钟。

相关问题