2012-06-21 101 views
1

我試圖通過使用Java中JavaCV 0.1和OpenCV 2.4.0拼接多張圖片,我使用拼接圖片驗證碼:JavaCV拼接

stitcher = Stitcher.createDefault(false); 

MatVector images = new MatVector(imageN.size()); 
for(...){ 
    CvArr image = cvLoadImage(imageN); 
    images.put(index,image); 
} 

MatVector result = new MatVector(1); 
int status = stitcher.stitch(images,result); 

if(status == stitcher.OK) 
{ 
    cvSaveImage(result.getIplImage(0)); 
} 

注1:在這個例子中加載的圖像的有效圖像用於拼接。

注2:C++代碼的版本與當前配置

沒有問題在stitcher.stitch方法的OpenCV運行拋出異常斷言諸如「K == MAT」。我應該如何解決這個問題? MatVector的用法在這個示例代碼中是否正確?

謝謝...

回答

1

我發現它,它是一個與JavaCv相關的錯誤。

實際上JavaCv並不是有罪.OpenCV stitcher API使用cv :: OutputArray返回拼接圖像,但是此方法在執行時將cv :: OutputArray轉換爲cv :: Mat。 JavaCV端口OpenCV方法只通過使用參數接口,因此它將參數轉換爲std :: vector,這導致斷言失敗。

需要將std :: vector轉換爲Mat以使其工作。我不知道這種轉換是否存在其他方式,否則只有lib的作者才能解決這個問題。

據說C++版本正在工作,但實際上,當pano參數作爲cv :: Mat提供時,當std :: vector被輸入時,它會再次提供相同的失敗聲明。