Что я реализую, так это нахожу прямоугольник (я хотел бы также установить минимальный и максимальный размер. Но я не знаю, как это сделать.), А затем вырезать только область прямоугольника и преобразовать его в изображение прямоугольника. , Как сканер документов. Но мне нужно отсканировать несколько букв в прямоугольной части документа.
Это то, что я сделал до сих пор:
rgbaMat = inputFrame.rgba()
// generate gray scale and blur
Imgproc.cvtColor(rgbaMat, grayMat, Imgproc.COLOR_BGR2GRAY)
val ratio = 3
// Find Canny Edges
Imgproc.Canny(grayMat, grayMat, threshold, threshold * ratio.toDouble(), 3)
val contours: List<MatOfPoint2f> = ArrayList()
val hierarchy = Mat()
Imgproc.findContours(
grayMat,
contours as ArrayList<MatOfPoint>,
hierarchy,
Imgproc.RETR_LIST,
Imgproc.CHAIN_APPROX_SIMPLE,
Point(0.0, 0.0)
);
for (c in contours.indices) {
Imgproc.drawContours(rgbaMat, contours, c, Scalar(0.0, 255.0, 0.0, 200.0), -1)
if (c > 100) {
break
}
}
Но проблема в следующем: 1. Он обнаруживает все виды краев и заполните его. Я хочу, чтобы он обнаружил только один прямоугольник.
Это не так буквы внутри прямоугольника, я хочу, чтобы цвет был немного прозрачным.
Я не знаю, что точка (координаты) и Я не знаю, как извлечь изображение и сделать его прямоугольным изображением. (Для OCR после этого процесса)
в для l oop, я реализовал его, чтобы сломать, когда он больше 100, потому что, если у него нет этого ограничения, устройство становится супер медленно, а иногда это пугает, и тогда пользователю может понадобиться перезагрузиться и чувствовать себя раздражающим. Есть ли лучший способ?
Как я могу это реализовать?
ссылка: https://www.pyimagesearch.com/2014/09/01/build-kick-ass-mobile-document-scanner-just-5-minutes/