2015-06-20 32 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分鐘。

相關問題