我在Android上使用OpenCV进行车牌识别。作为过程的一部分,我使用Canny边缘检测来查找图像中的边缘。我遇到的问题是图像中的水平边缘没有被检测为实线。问题是因为线条不是固体,我无法将其检测为一个轮廓
这是我在
上运行边缘检测的图像
这是边缘检测的结果。如您所见,号牌的垂直边缘已被检测为实线,但水平线被点缀。
这是我的代码
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));
答案 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的形态学关闭操作。
形态学关闭操作有助于填补小空白。