Я извлек подпись из отсканированного листа бумаги. Пользователи знают, что подпись должна быть только на белом листе бумаги.
Я реализовал обрезку подписи из загруженного изображения с помощью Java-библиотеки OpenCV.
Я хочу улучшить качество извлеченной подписи. Я понял, что лучшая версия вместе с исходным файлом — это версия в оттенках серого (grayROI). Например, я бы сделал фон белее.
Не могли бы вы подсказать, как я могу улучшить окончательный вид подписи?
Я извлек подпись из отсканированного листа бумаги. Пользователи знают, что подпись должна быть только на белом листе бумаги. Я реализовал обрезку подписи из загруженного изображения с помощью Java-библиотеки OpenCV. Я хочу улучшить качество извлеченной подписи. Я понял, что лучшая версия вместе с исходным файлом — это версия в оттенках серого (grayROI). Например, я бы сделал фон белее. Не могли бы вы подсказать, как я могу улучшить окончательный вид подписи? [code]import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List;
// check if the file extension is correct! if (!fileExtension.toLowerCase().equals("jpg") && !fileExtension.toLowerCase().equals("jpeg") && !fileExtension.toLowerCase().equals("png")) { return; }
try {
if (!isLoaded) { OpenCV.loadLocally(); isLoaded = true; }
// Load image Mat image = Imgcodecs.imread(signature.getPath()); Mat imageOriginal = image.clone();
// Convert image to HSV color space Mat hsv = new Mat(); Imgproc.cvtColor(image, hsv, Imgproc.COLOR_BGR2HSV);
// Define lower and upper bounds for color threshold Scalar lower = new Scalar(90, 38, 0); Scalar upper = new Scalar(145, 255, 255);
// Threshold the HSV image to get only desired colors Mat mask = new Mat(); Core.inRange(hsv, lower, upper, mask);
// Find contours List contours = new ArrayList(); Mat hierarchy = new Mat(); Imgproc.findContours(mask, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
// Combine all contours into one and get bounding box MatOfPoint allContours = new MatOfPoint(); for (MatOfPoint contour : contours) { List pts = contour.toList(); allContours.push_back(new MatOfPoint(Converters.vector_Point_to_Mat(pts))); }
Rect boundingBox = Imgproc.boundingRect(allContours);
// Add 5 pixels to each dimension of the bounding box int padding = 10; int x = Math.max(boundingBox.x - padding, 0); int y = Math.max(boundingBox.y - padding, 0); int width = Math.min(boundingBox.width + 2 * padding, image.cols() - x); int height = Math.min(boundingBox.height + 2 * padding, image.rows() - y); Rect paddedBoundingBox = new Rect(x, y, width, height);
// Extract ROI //Mat ROI = new Mat(imageOriginal, boundingBox); Mat ROI = new Mat(imageOriginal, paddedBoundingBox);
// Convert ROI to grayscale Mat grayROI = new Mat(); Imgproc.cvtColor(ROI, grayROI, Imgproc.COLOR_BGR2GRAY);
// Apply histogram equalization to improve contrast Mat equalizedROI = new Mat(); Imgproc.equalizeHist(grayROI, equalizedROI);
// Apply adaptive thresholding to binarize the image Mat binaryROI = new Mat(); Imgproc.adaptiveThreshold(grayROI, binaryROI, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY, 11, 2);
// Apply morphological transformations to improve the signature appearance Mat morphROI = new Mat(); Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(2, 2)); Imgproc.morphologyEx(binaryROI, morphROI, Imgproc.MORPH_CLOSE, kernel); Imgproc.morphologyEx(morphROI, morphROI, Imgproc.MORPH_OPEN, kernel);
У меня есть лист формата, который содержит фиксированный верхний и нижний колонтитулы, а также изменяемый основной (между верхним и нижним колонтитулом), как сделать так, чтобы верхний и нижний колонтитулы не находились над основным или основной не...
So I want to extract logo and tabular data from scanned invoice PDF. When I try to extract logos as images with using pypdf2 library, I have result whole document as image. That is why I can not reach the logo.
Я работаю над приложением Android, которое сканирует бумажный документ, используя gmsdocumentscanner. Моя цель состоит в том, чтобы определить, какие круги заполнены, аналогичны радиопроизводству в форме. После сканирования документа мне нужно...