[英]OpenCV with CUDA, very clear error message but unable to figure it out why?
我將從顯示我要測試的代碼開始
#include<opencv2/opencv.hpp>
#include<opencv2/gpu/gpu.hpp>
#include<stdio.h>
using namespace cv;
using namespace std;
using namespace gpu;
int main(int argc,char* argv[]){
if( argc != 2){
cout <<" Usage: blur_blur_blur.exe Image_File_To_Go" << endl;
return -1;
}
GpuMat img_gpu,dest_gpu;
Mat img,dest;
img = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
img_gpu.upload(img);
cv::gpu::Canny(img_gpu,dest_gpu,50,70);
dest_gpu.download(dest);
imshow("picture",img);
imshow("canny",dest);
waitKey(0);
return 0;
}
如您所見,這是使用CUDA練習和測試OpenCV的簡單代碼。 問題是,我無法運行它。 更具體地說,它會生成,但是當我嘗試運行它時會彈出錯誤消息,提示說:
OpenCV錯誤:未知函數,文件...... \\ sources \\ modules \\ core \\ src \\ gpumat.cpp,第1415行中的Gpu API調用(內存不足)
我嘗試處理的圖像為1kb,分辨率為54x33。 它實際上比我見過的任何其他縮略圖都小。
我不知道去哪兒。 有什么幫助嗎?
PS。 我將OpenCV 2.4.7與CUDA ToolKit 4.2一起使用,也許我的CUDA太舊了,無法用於最新的OpenCV?
使用32位調試版本,該代碼對我來說運行良好,無需進行任何修改。
系統:
Windows 7 64位,Visual Studio 2012,CUDA 5.5,OpenCV 2.4.7編譯為GPU支持(Fermi目標),在GTX 570上運行。
輸入和輸出示例(分辨率640x480):
內存不足意味着您沒有足夠的內存來分配數據。 解決方案是使用較小的圖像運行算法或使用另一個GPU。
也可能是您嘗試調試而不是發布。 確保您沒有使用CUDA調試標志-g,-G,--debug構建OpenCV。
我不確定,在調用Canny之前,可能還需要指定dst-buffer
。
嘗試:
dest_gpu = GpuMat(img_gpu.size(), img_gpu.type());
順便說一句,您應該更具體。 哪個呼叫引發錯誤?
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.