2012-02-16 14 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

はそれだけで(SRC)をdst.uploadすべきではありません。 ? –

+0

はい、 'dst.upload(src)'にする必要があります。 –

3

imreadへの呼び出しがnullを返すため、Gpu行列が空であるかどうかは定義されていないため、GpuMatコンストラクタでアサーションがスローされると思います。

これは、ファイルが見つからない、権限が不適切である、サポートされていない、または無効な形式のために、イメージが読み込めないことを意味します。

baboon.jpgが、プログラムを実行しているディレクトリと同じディレクトリに存在することを確認し、イメージファイルが正しいアクセス許可を持ち、壊れていないことも確認します。

+0

あなたは正しかった; DのTHX – JohnnyAce