簡體   English   中英

帶有CUDA的OpenCV,非常清晰的錯誤消息,但無法弄清為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM