2012-02-16 73 views
1

我嘗試使用OpenCV的GpuMat但我發現了一個斷言錯誤,我的代碼如下OpenCV的GpuMat使用

#include "opencv2/opencv.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/gpu/gpu.hpp" 

// ... 

using namespace cv; 
using namespace cv::gpu; 

int main() 
{ 
    string baboon = "baboon.jpg"; 
    try 
    { 
     DeviceInfo info = getDevice(); 
     cout << info.name() << endl; 

     GpuMat src; 

     src = cv::imread(baboon, 1); 
    } 
    catch (const cv::Exception* ex) 
    { 
     cout << "Error: " << ex->what() << endl; 
    } 
} 

輸出是:

GeForce GTX 550 Ti 
OpenCV Error: Assertion failed (!m.empty()) in unknown function, file ($PATH_TO_OPENCV)\opencv\modules\gpu\src\gpumat.cpp, line 411 

如何任何想法解決這個問題?

回答

6

解決的辦法是:

Mat src; 

src = cv::imread("..."); 

GpuMat dst; 

dst.upload(src); 
+0

它不應該只是被dst.upload(SRC); ? – 2013-12-03 19:45:55

+0

是的,它應該是'dst.upload(src)'; – 2014-07-13 19:58:08

3

我相信它會在GpuMat的構造函數中拋出斷言,因爲你對imread的調用返回null,因此你的Gpu矩陣是空的/未定義的。

這意味着您的圖片無法被讀取,原因可能是文件丟失,權限不當或格式不受支持或無效。

驗證baboon.jpg在同一個目錄中,你正在運行的程序存在,也確認您的圖像文件具有正確的權限並沒有損壞。

+0

你是對的; d THX – JohnnyAce 2012-02-16 21:06:01