Android OpenCV边缘检测

时间:2012-03-21 13:11:02

标签: android image-processing opencv

我在Android上使用OpenCV进行车牌识别。作为过程的一部分,我使用Canny边缘检测来查找图像中的边缘。我遇到的问题是图像中的水平边缘没有被检测为实线。问题是因为线条不是固体,我无法将其检测为一个轮廓

这是我在

上运行边缘检测的图像

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 个答案:

答案 0 :(得分:2)

当我实现文档边缘检测并使用Morphology扩展边缘以便更好地检测时,我遇到了类似的问题:

 Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_DILATE, new Size(3,3), new Point(1,1));
 Imgproc.dilate(mIntermediateMat, mIntermediateMat, kernel);

答案 1 :(得分:1)

快速而肮脏的解决方案是使用描述here的形态学关闭操作。

形态学关闭操作有助于填补小空白。