2014-04-16 37 views
1

我試圖做adaptiveThresholding的圖像上,但它給了我這個錯誤:adaptivethreshold給出了一個錯誤(OpenCV的,JAVA)

OpenCV Error: Assertion failed (src.type() == CV_8UC1) in adaptiveThreshold 

我似乎無法理解爲什麼,這裏是我的代碼:

  Mat source = Highgui.imread("camera.jpg", 
     Highgui.CV_LOAD_IMAGE_COLOR); 

     Mat destination = new Mat(source.rows(),source.cols(),source.type()); 

     Imgproc.cvtColor(source, destination, Imgproc.COLOR_RGB2GRAY); 

     Highgui.imwrite("grayscale.jpg", destination); 

     Mat source2 = Highgui.imread("grayscale.jpg", 
     Highgui.CV_LOAD_IMAGE_COLOR); 

     Mat destination2 = new Mat(source.rows(),source.cols(),source.type()); 

     Imgproc.adaptiveThreshold(source2, destination2, 255, 
     Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY_INV, 15, 4); 
+0

請更新與堆棧跟蹤的問題。 –

+0

我是新來的,所以我不知道你的意思。 – user3524239

+0

當出現未捕獲的異常時,會顯示堆棧跟蹤。它告訴你代碼的行,在那裏繼承異常。 –

回答

3

對於adaptiveThreshold源應該是8位單通道圖像,但要裝載source2顏色,

所以,改變線

Mat source2 = Highgui.imread("grayscale.jpg", Highgui.CV_LOAD_IMAGE_COLOR); 

Mat source2 = Highgui.imread("grayscale.jpg", Highgui.CV_LOAD_IMAGE_GRAYSCALE); 

而且爲什麼要保存和adaptiveThreshold前負荷destination圖像,直接把它傳遞給adaptiveThreshold()