Java中的OpenCV drawContours

我正在尝试在图像中的对象周围绘制轮廓但是我得到错误OpenCV Error: Unsupported format or combination of formats ([Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only) in cvStartFindContours, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\contours.cpp, line 198

我试图转换图像但错误仍然存​​在如何使用DrawContour?

  Mat imageInMat = Imgcodecs.imread("C:/Users/ja/workspace/imgtomath/bin/imgtomath/lena.png"); if(imageInMat.empty()== true) {System.out.println("Error no image found!!");} imageInMat.convertTo(imageInMat, CvType.CV_32SC1); List contours = new ArrayList(); Mat hierarchy = new Mat(); Imgproc.findContours(imageInMat, contours, hierarchy, Imgproc.RETR_FLOODFILL, Imgproc.CHAIN_APPROX_SIMPLE); Imgproc.drawContours(imageInMat, contours, -1, new Scalar(255,0,0)); 

它应该正常工作:

 Mat image = Imgcodecs.imread("C:/Users/ja/workspace/imgtomath/bin/imgtomath/lena.png"); if(image.empty() == true) { System.out.println("Error: no image found!"); } List contours = new ArrayList(); Mat image32S = new Mat(); image.convertTo(image32S, CvType.CV_32SC1); Imgproc.findContours(image32S, contours, new Mat(), Imgproc.RETR_FLOODFILL, Imgproc.CHAIN_APPROX_SIMPLE); // Draw all the contours such that they are filled in. Mat contourImg = new Mat(image32S.size(), image32S.type()); for (int i = 0; i < contours.size(); i++) { Imgproc.drawContours(contourImg, contours, i, new Scalar(255, 255, 255), -1); } Highgui.imwrite("debug_image.jpg", contourImg); // DEBUG