Rumah >Java >javaTutorial >Cara menggunakan teknologi Java untuk mengenal pasti ketulenan meterai rasmi dalam kontrak
Cara menggunakan teknologi Java untuk mengenal pasti ketulenan meterai rasmi dalam kontrak
Abstrak:
Meterai rasmi memainkan peranan penting dalam kontrak untuk memastikan kesahihan dan ketulenan kontrak. Walau bagaimanapun, teknologi untuk menempa meterai rasmi juga sentiasa dikemas kini, yang membawa cabaran kepada pengenalan kontrak. Artikel ini akan memperkenalkan cara menggunakan teknologi Java untuk mengenal pasti ketulenan meterai rasmi dalam kontrak, dan memberikan contoh kod yang sepadan.
1. Prinsip mengenal pasti ketulenan meterai rasmi
Meterai rasmi ialah meterai undang-undang perusahaan dan institusi, dan ia unik, tertutup dan normatif. Ketulenan meterai rasmi boleh dikenal pasti melalui aspek berikut:
2. Cara mengenal pasti ketulenan meterai rasmi menggunakan teknologi Java
Contoh kod:
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point ;
opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;
import org.opencv.core.CvType;
import org.opencv.core.CvType;.CV_8U SealDetection kelas awam {
// 加载本地库 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // 读取图片文件 Mat sourceImage = Imgcodecs.imread("contract_seal.jpg"); // 灰度处理 Mat grayImage = new Mat(); Imgproc.cvtColor(sourceImage, grayImage, Imgproc.COLOR_BGR2GRAY); // 图像边缘检测 Mat edgeImage = new Mat(); Imgproc.Canny(grayImage, edgeImage, 100, 200); // 圆查找 Mat circles = new Mat(); Imgproc.HoughCircles(edgeImage, circles, Imgproc.CV_HOUGH_GRADIENT, 1, edgeImage.rows()/8, 200, 100, 0, 0); // 绘制检测到的圆 for (int i = 0; i < circles.cols(); i++) { double[] circleData = circles.get(0, i); Point center = new Point(Math.round(circleData[0]), Math.round(circleData[1])); int radius = (int) Math.round(circleData[2]); Imgproc.circle(sourceImage, center, radius, new Scalar(0, 255, 0), 2); } // 显示处理结果 HighGui.imshow("Detected Seals", sourceImage); HighGui.waitKey(0);
import org.opencv.core.CvType;
import org.opencv.core.Mat
f.opencv.core. opencv.core.MatOfKeyPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.core.Size; opencv.imgcodecs.Imgcodecs;
import org.opencv.features2d.FeatureDetector;
import org.opencv.features2d.Features2d;
import org. opencv.features2d.KeyPoint;
import org.opencv.features2d.DescriptorExtractor;
Pengesahan Meterai kelas awam {
utama kekosongan statik awam(String[] args) {
//加载本地库 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); //读取真实公章图像 Mat refImage = Imgcodecs.imread("real_seal.jpg"); //读取合同公章图像 Mat testImage = Imgcodecs.imread("contract_seal.jpg"); //创建KAZE关键点检测器 FeatureDetector detector = FeatureDetector.create(FeatureDetector.KAZE); //检测关键点 MatOfKeyPoint refKp = new MatOfKeyPoint(); MatOfKeyPoint testKp = new MatOfKeyPoint(); detector.detect(refImage, refKp); detector.detect(testImage, testKp); //提取特征描述子 DescriptorExtractor extractor = DescriptorExtractor.create(DescriptorExtractor.KAZE); Mat descriptorRef = new Mat(); Mat descriptorTest = new Mat(); extractor.compute(refImage, refKp, descriptorRef); extractor.compute(testImage, testKp, descriptorTest); //创建FLANN特征匹配器 DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING); //匹配特征描述子 MatOfDMatch matches = new MatOfDMatch(); matcher.match(descriptorRef, descriptorTest, matches); //绘制匹配结果 Mat outputImage = new Mat(); Scalar matchColor = new Scalar(0, 255, 0); Features2d.drawMatches(refImage, refKp, testImage, testKp, matches, outputImage, matchColor, Scalar.all(-1), new MatOfByte(), Features2d.NOT_DRAW_SINGLE_POINTS); //计算匹配度 double totalMatches = matches.rows(); System.out.println("总匹配点数: " + totalMatches); double maxDist = 0; double minDist = 100; List<DMatch> matchList = matches.toList(); //获取匹配点的最大和最小距离 for (int i = 0; i < totalMatches; i++) { double dist = matchList.get(i).distance; if (dist < minDist) minDist = dist; if (dist > maxDist) maxDist = dist; } //选择适合的匹配点 LinkedList<DMatch> goodMatches = new LinkedList<DMatch>(); for (int i = 0; i < totalMatches; i++) { if (matchList.get(i).distance <= 3 * minDist) { goodMatches.addLast(matchList.get(i)); } } //计算匹配率 double matchPercentage = (goodMatches.size() / totalMatches) * 100; System.out.println("公章匹配率: " + matchPercentage + "%"); //显示处理结果 HighGui.imshow("Matched Seals", outputImage); HighGui.waitKey(0);
Atas ialah kandungan terperinci Cara menggunakan teknologi Java untuk mengenal pasti ketulenan meterai rasmi dalam kontrak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!