2017-03-24 4 views
1

を割り当て、私は画像をステッチするためにOpenCVのを使用しようとしていますが、最も単純なコードのために、私はエラーcv2.cpp:152: error: (-215) The data should normally be NULL! in function NumpyAllocator::allocate単純なステッチングとOpenCV 3.2.0でエラー - cv2.cpp:152:エラー:(-215)データは通常NULLでなければなりません!関数NumpyAllocatorに::

を取得し、私はそれのpython 3.6でのpython 2.7.10とし、Windows上でMac上でテストされています。 1

コードは以下のようになります。グーグルに基づいて

import cv2 

cv2.ocl.setUseOpenCL(False) 
stitcher = cv2.createStitcher(False) 
foo = cv2.imread("image1.jpg") 
bar = cv2.imread("image2.jpg") 
result = stitcher.stitch((foo,bar)) 

は、一部の人々は、この問題そのcv2.ocl.setUseOpenCL(False)修正を示唆して、どうやらそれは私の場合にはない:)

検索

どのように動作させるための提案は高く評価されています:)

答えて

1

これは残念ながらOpenCV 3.xのバグで、まだ修正されていません。 https://github.com/opencv/opencv/issues/6969

ページでは、実際にmodules/python/src2/cv2.cppソースファイルを開くことであろうと、そのエラーに線152の周りにif文を削除するには、これをハックするための一つの方法:ここでのGithub上の問題のページへのリンクがあります。それif文は次のとおりです。

if(data != 0) 
    { 
     CV_Error(Error::StsAssert, "The data should normally be NULL!"); 
     // probably this is safe to do in such extreme case 
     return stdAllocator->allocate(dims0, sizes, type, data, step, flags, usageFlags); 
    } 

そして、この全体if文を削除OpenCVのを再コンパイルし、これが最終的に働いていた問題のページの一人がありました。これは残念なことに、OpenCLが無効になっていても、これを回避できる唯一の方法です。

このエラーは、PythonインターフェイスとC++環境(つまり、cv2.cppファイル)の間でやりとりされるソースファイルに例外がスローされるため、Pythonインターフェイスにのみ存在することに注意してください。この例外がスローされることなく、ネイティブC++ APIでスティッチャーが動作することは間違いありません。

+0

ありがとう、OpenCV 3. *をC++で使用しているときにもこの問題が表示されているかどうか知りませんか? –

+0

ちょうどpython。例外がスローされるファイルは、Python環境とC++環境の間のインタフェースファイルです。あなたは間違いなく、ステッチャーをC++で動かすことができます。 – rayryeng

+0

恐ろしく、ありがとう! –

関連する問題