Я использую OpenCV в Kotlin для обнаружения черных линий, но он всегда дает мне контуры черных линий, и поскольку они вообще не соединяются, это было бы необходимо, потому что мне придется преобразовать это в графики а затем используйте поиск пути!
Так как мне сделать так, чтобы объединить/сделать между ними только один контур?
Другим решением было бы, если бы он мог обнаруживать перекрестки/перекрестки, а затем иметь возможность создавать соединения типа X в кубе, как показано ниже:

Вот код: личное развлечение ConvertSnapshotImageOpenCV (контекст: Контекст) { OpenCVLoader.initDebug()
val imagePath = File(context.getExternalFilesDir(null), "gps_app/map_snapshot.png") // Betöltés Mat objektumba val image = Imgcodecs.imread(imagePath.absolutePath, Imgcodecs.IMREAD_GRAYSCALE) // Получение ответа на запрос // Также есть выход val CropHeight = image.rows() / 9 // Также 9% — при сохранении логотипа Google val CropedImage = image.submat(0, image.rows() -cropHeight, 0, image.cols()) // Csak a fekete vonalak tartása meg val результат = Mat() Core.inRange(croppedImage, Scalar(0.0), Scalar(25.0), result) // От 0.0 до 100.0 можно получить результат, модифицируя его val контуры = ArrayList() Imgproc.adaptiveThreshold(croppedImage, result, 255.0, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 25, 12.0) Imgproc.findContours(результат, контуры, Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE) val растровое изображение = Bitmap.createBitmap( обрезанноеИзображение.cols(), обрезанноеИзображение.строки(), Bitmap.Config.ARGB_8888 ) val холст = Холст (растровое изображение) Canvas.drawColor(Color.WHITE) // Создание и изменение цвета for (контур в контурах) { val Points = ArrayList(contour.toList()) вал путь = Путь() val svgPathData = StringBuilder("M") // "M" az "перейти в" параметры SVG если (points.isNotEmpty()) { svgPathData.append("${points[0].x},${points[0].y}") // Доступ к исходному состоянию } for (i в 1 до Points.size) { path.lineTo(points.x.toFloat(),points.y.toFloat()) svgPathData.append(" L ${points.x},${points.y}") // "L" az "line to" SVG parancs } путь.закрыть() svgPathData.append(" Z") // "Z" az "закрыть путь" Параметр SVG DataHolder.pathData.add(svgPathData.toString()) // Путь SVG, заданный для osztályszintű változóhoz Log.d("MyApp: - pathData main: ", DataHolder.pathData.toString()) вал краска = Краска() краска.цвет = Цвет.ЧЕРНЫЙ краска.стиль = Краска.Стиль.ЗАПОЛНЕНИЕ Canvas.drawPath(путь, краска) } val svgString = createSVGFromPathData(DataHolder.pathData) Каталог val = File(context.getExternalFilesDir(null), "gps_app") если (!directory.exists()) { каталог.mkdirs() } val svgFile = Файл(каталог, "convertedSVG_Map.svg") svgFile.writeText(svgString) } Я пробовал другие способы, но они не сработали
