Android OpenCV Edge Detection - PullRequest
       19

Android OpenCV Edge Detection

1 голос
/ 21 марта 2012

Я использую OpenCV на Android для распознавания номерных знаков.Как часть процесса я использую обнаружение краев Канни, чтобы найти края в изображении.У меня проблема в том, что горизонтальные края внутри изображения не определяются как сплошные линии.Проблема в том, что из-за того, что линии не сплошные, я не могу определить его как один контур

Это изображение, на котором я запускаю функцию обнаружения края на

enter image description here

Это результат обнаружения края.Как вы можете видеть, вертикальные края номерного знака были обнаружены как сплошные линии, но горизонтали усеяны.

enter image description here

Вот мой код

        org.opencv.imgproc.Imgproc.Canny(snapshot.getImage(), dst,
            Configurator.PlateDetectCannyThreshold1,
            Configurator.PlateDetectCannyThreshold2,
            Configurator.PlateDetectCannyApperture);
    List<Mat> contours = new Vector<Mat>();
    org.opencv.imgproc.Imgproc.findContours(dst, contours, new Mat(),
            org.opencv.imgproc.Imgproc.CV_RETR_LIST,
            org.opencv.imgproc.Imgproc.CV_CHAIN_APPROX_SIMPLE,
            new org.opencv.core.Point(0, 0));

Ответы [ 2 ]

2 голосов
/ 05 мая 2015

Я столкнулся с подобной проблемой, когда я реализовал обнаружение края документа и использовал морфологию, чтобы расширить край для лучшего обнаружения:

 Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_DILATE, new Size(3,3), new Point(1,1));
 Imgproc.dilate(mIntermediateMat, mIntermediateMat, kernel);
1 голос
/ 18 мая 2012

Быстрое и грязное решение будет использовать морфологическое закрытие, как описано здесь .

Морфологическое закрытие помогает заполнить небольшие промежутки.

...