我在安卓系统上使用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));发布于 2015-05-05 07:28:12
当我实现文档边缘检测时,我遇到了类似的问题,并使用Morphology扩展边缘以获得更好的检测:
Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_DILATE, new Size(3,3), new Point(1,1));
Imgproc.dilate(mIntermediateMat, mIntermediateMat, kernel);发布于 2012-05-18 04:09:50
一个快速而棘手的解决方案是使用形态闭合操作,如here所述。
形态闭合操作有助于填充小间隙。
https://stackoverflow.com/questions/9805310
复制相似问题