Нахождение области выпуклой оболочки в Яве
Привет, я очень новичок в обработке изображений.Я пытаюсь вычислить плотность в opencv по контурам изображения. Но метод contourea() в моем коде дает ошибку утверждения, которая:
"Ошибка OpenCV: ошибка утверждения
(контурная.checkVector(2) &ГТ;= 0 &&усилителя;
(контурная.глубина() == CV_32F || контура.глубина() == CV_32S))
в cv:: contourea").
Как я могу это исправить? Спасибо.
Что я уже пробовал:
import static com.googlecode.javacv.cpp.opencv_imgproc.CV_THRESH_BINARY; import java.util.ArrayList; import java.util.List; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfInt; import org.opencv.core.MatOfPoint; import org.opencv.core.Scalar; import org.opencv.highgui.Highgui; import org.opencv.imgproc.Imgproc; import static org.opencv.imgproc.Imgproc.contourArea; import static org.opencv.imgproc.Imgproc.findContours; public class Solidity { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat image = Highgui.imread("D:\\MyImage.bmp"); if (image.empty() == true) { System.out.println("Error: no image found!"); } else { List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); Mat image_2 = new Mat(); Imgproc.cvtColor(image, image_2, Imgproc.COLOR_BGR2GRAY); Imgproc.threshold(image_2, image_2, 150, 255, CV_THRESH_BINARY); findContours(image_2, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE); for (int i = 0; i < contours.size(); i++) { Imgproc.drawContours(image, contours, -1, new Scalar(240, 0, 0), 2); double area=contourArea(contours.get(i)); MatOfInt matOfInt=new MatOfInt(); Imgproc.convexHull(contours.get(i),matOfInt); //Mat conMat=new Mat(contours.get(i).size(),CV_32FC1); //Error comes from here double hullArea=contourArea(matOfInt); double solidity=area/hullArea; System.out.println(solidity); } } } }
Richard MacCutchan
Какая строка вызывает ошибку?
vino.A
double hullArea=contourea(matOfInt); / / эта строка
Richard MacCutchan
Затем вам нужно проверить документацию, чтобы увидеть, что отсутствует или неверно в параметрах, которые вы передаете в систему. contourArea
метод.