2014-10-10 107 views
0

我有一個問題,這個梅託德OpenCV庫的...OpenCV的Core.add錯誤

Imgproc.cvtColor(image , image , Imgproc.COLOR_RGBA2RGB); 

     Mat prob_fgd = new Mat(1, 1, CvType.CV_8U, 
       new Scalar(Imgproc.GC_PR_FGD)); 

     try { 
      Imgproc.grabCut(image, firstMask, rect, bgModel, fgModel, 3, 0); 
     } catch (Exception w) { 
      System.out.println(w.getMessage()); 
     } 

     Core.compare(firstMask, prob_fgd, firstMask, Core.CMP_EQ); 
     foreground = new Mat(image.size(), CvType.CV_8UC3, new Scalar(255, 255, 
       255)); 

     image.copyTo(foreground, firstMask); 

     Imgproc.resize(background, background, image.size()); 

     mask = new Mat(image.size(), CvType.CV_8UC1, new Scalar(100, 255, 
       100)); 

     foreground = overlay_colored_roi(foreground, new Scalar(100, 255, 100)); 

     Imgproc.cvtColor(foreground, mask, Imgproc.COLOR_BGR2GRAY); 

     Imgproc.threshold(mask, mask, 254, 255, Imgproc.THRESH_BINARY_INV); 

     mask.copyTo(ref); 

     vals = new Mat(1, 1, CvType.CV_8UC3, new Scalar(0.0)); 

     background.copyTo(dst); 

     background.setTo(vals, mask); 

,直到這裏的代碼工作。 這裏停止。

日誌說core.add的輸入元素必須具有相同的大小,但background.size())foreground.size())dst.size())mask.size())是平等的。

Core.add(background, foreground, dst, mask); 

回答

0

他們還必須在代碼後臺初始化相同數量的信道。由於中沒有顯示我假設必須problem.Secondly嘗試正常另外功能是沒有面具,檢查輸出如果問題在完整代碼後仍然存在,希望這有助於。