Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 图片处理简易指南

Java 图片处理简易指南

原创
作者头像
繁依Fanyi
发布于 2024-08-02 15:59:14
发布于 2024-08-02 15:59:14
2800
举报

引言

图像处理是各类应用程序的重要组成部分,从简单的图像编辑到复杂的图像分析,广泛应用于计算机视觉、医学影像、遥感等领域。Java作为一种多功能且强大的编程语言,提供了丰富的库和框架来高效地处理图像处理任务。本文将带您了解Java图像处理的基本概念、工具以及实践示例,帮助您掌握Java图像处理技术。

一、图像处理基础

1.1 什么是图像处理

图像处理是指对图像进行各种操作,以实现预期效果,如增强图像质量、提取有用信息、变换图像以便更好地可视化等。图像处理可大致分为以下几类:

  • 图像增强:改善图像的视觉效果,如去噪、对比度调整等。
  • 图像复原:修复被损坏或失真的图像。
  • 图像压缩:减少图像数据量,以便存储和传输。
  • 图像分析:提取图像中的有用信息,如物体识别、边缘检测等。
  • 图像变换:将图像转换为另一种表示形式,以便进一步处理。
1.2 Java图像处理的工具和库

Java提供了多种图像处理库和工具,主要包括:

  • Java AWT(Abstract Window Toolkit):Java内置的基本图形库,提供基本的图像处理功能。
  • Java 2D API:扩展了AWT库,提供更高级的图形和图像处理能力。
  • 第三方库
    • JAI(Java Advanced Imaging):Java高级图像处理库,提供丰富的图像处理操作。
    • OpenCV:开源计算机视觉库,支持多种编程语言,包括Java。
    • ImageJ:用于科学图像分析的Java开源图像处理工具。

二、使用Java AWT和Java 2D进行图像处理

2.1 加载和显示图像

使用Java AWT和Java 2D API加载和显示图像非常简单。以下是一个基本示例:

代码语言:java
AI代码解释
复制
import javax.swing.*;
import java.awt.*;

public class ImageDisplay extends JPanel {
    private Image image;

    public ImageDisplay(String imagePath) {
        this.image = Toolkit.getDefaultToolkit().getImage(imagePath);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Image Display");
        ImageDisplay panel = new ImageDisplay("path/to/image.jpg");
        frame.add(panel);
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
2.2 图像缩放

图像缩放是图像处理中常见的操作。使用Java 2D API可以轻松实现图像缩放:

代码语言:java
AI代码解释
复制
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageScaling {
    public static BufferedImage scaleImage(BufferedImage originalImage, int width, int height) {
        BufferedImage scaledImage = new BufferedImage(width, height, originalImage.getType());
        Graphics2D g2d = scaledImage.createGraphics();
        g2d.drawImage(originalImage, 0, 0, width, height, null);
        g2d.dispose();
        return scaledImage;
    }

    public static void main(String[] args) {
        try {
            BufferedImage originalImage = ImageIO.read(new File("path/to/image.jpg"));
            BufferedImage scaledImage = scaleImage(originalImage, 400, 300);
            ImageIO.write(scaledImage, "jpg", new File("path/to/scaled_image.jpg"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
2.3 图像旋转

图像旋转可以使用Java 2D API中的AffineTransform类来实现:

代码语言:java
AI代码解释
复制
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageRotation {
    public static BufferedImage rotateImage(BufferedImage originalImage, double angle) {
        int width = originalImage.getWidth();
        int height = originalImage.getHeight();
        BufferedImage rotatedImage = new BufferedImage(width, height, originalImage.getType());
        Graphics2D g2d = rotatedImage.createGraphics();
        AffineTransform transform = new AffineTransform();
        transform.rotate(Math.toRadians(angle), width / 2, height / 2);
        g2d.setTransform(transform);
        g2d.drawImage(originalImage, 0, 0, null);
        g2d.dispose();
        return rotatedImage;
    }

    public static void main(String[] args) {
        try {
            BufferedImage originalImage = ImageIO.read(new File("path/to/image.jpg"));
            BufferedImage rotatedImage = rotateImage(originalImage, 45);
            ImageIO.write(rotatedImage, "jpg", new File("path/to/rotated_image.jpg"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
2.4 图像裁剪

图像裁剪也是常见的图像处理操作之一,可以使用Java 2D API中的BufferedImage类来实现:

代码语言:java
AI代码解释
复制
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class ImageCropping {
    public static BufferedImage cropImage(BufferedImage originalImage, int x, int y, int width, int height) {
        return originalImage.getSubimage(x, y, width, height);
    }

    public static void main(String[] args) {
        try {
            BufferedImage originalImage = ImageIO.read(new File("path/to/image.jpg"));
            BufferedImage croppedImage = cropImage(originalImage, 100, 50, 200, 150);
            ImageIO.write(croppedImage, "jpg", new File("path/to/cropped_image.jpg"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

三、使用JAI进行高级图像处理

3.1 安装和配置JAI

Java Advanced Imaging (JAI)是一个强大的图像处理库,提供了丰富的图像操作。首先,需要在项目中引入JAI库,可以从这里下载。

3.2 使用JAI进行图像读取和显示

以下示例展示了如何使用JAI读取和显示图像:

代码语言:java
AI代码解释
复制
import javax.media.jai.JAI;
import javax.swing.*;
import java.awt.*;
import java.awt.image.RenderedImage;

public class JAIImageDisplay extends JPanel {
    private RenderedImage image;

    public JAIImageDisplay(String imagePath) {
        this.image = JAI.create("fileload", imagePath);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image.getAsBufferedImage(), 0, 0, this);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("JAI Image Display");
        JAIImageDisplay panel = new JAIImageDisplay("path/to/image.jpg");
        frame.add(panel);
        frame.setSize(800, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
3.3 使用JAI进行图像滤波

图像滤波是指对图像应用特定的过滤器,以实现特定的效果,如模糊、锐化等。以下是一个使用JAI进行图像滤波的示例:

代码语言:java
AI代码解释
复制
import javax.media.jai.JAI;
import javax.media.jai.KernelJAI;
import javax.media.jai.PlanarImage;
import java.awt.image.renderable.ParameterBlock;
import java.io.File;
import javax.imageio.ImageIO;

public class JAIFiltering {
    public static PlanarImage applyFilter(PlanarImage image, float[] kernelData, int kernelWidth, int kernelHeight) {
        KernelJAI kernel = new KernelJAI(kernelWidth, kernelHeight, kernelData);
        ParameterBlock pb = new ParameterBlock();
        pb.addSource(image);
        pb.add(kernel);
        return JAI.create("convolve", pb);
    }

    public static void main(String[] args) {
        try {
            PlanarImage originalImage = JAI.create("fileload", "path/to/image.jpg");
            float[] sharpenKernel = {
                0, -1, 0,
                -1, 5, -1,
                0, -1, 0
            };
            PlanarImage filteredImage = applyFilter(originalImage, sharpenKernel, 3, 3);
            ImageIO.write(filteredImage.getAsBufferedImage(), "jpg", new File("path/to/filtered_image.jpg"));
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
3.4 使用JAI进行几何变换

几何变换包括旋转、缩放、平移等操作。以下是一个使用JAI进行图像旋转的示例:

代码语言:java
AI代码解释
复制
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.media.jai.operator.AffineDescriptor;
import java.awt.geom.AffineTransform;
import java.io.File;
import javax.imageio.ImageIO;

public class JAIRotation {
    public static PlanarImage rotateImage(PlanarImage image, double angle) {
        AffineTransform transform = new AffineTransform();
        transform.rotate(Math.toRadians(angle), image.getWidth() / 2, image.getHeight() / 2);
        return AffineDescriptor.create(image, transform, null, null, null);
    }

    public static void main(String[] args) {
        try {
            PlanarImage originalImage = JAI.create("fileload", "path/to/image.jpg");
            PlanarImage rotatedImage = rotateImage(originalImage, 45);
            ImageIO.write(rotatedImage.getAsBufferedImage(), "jpg", new File("path/to/rotated_image.jpg"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

四、使用OpenCV进行高级图像处理

OpenCV是一个强大的开源计算机视觉库,支持多种编程语言,包括Java。以下将介绍如何使用OpenCV进行一些高级图像处理任务。

4.1 安装和配置OpenCV

首先,需要下载并安装OpenCV库,可以从这里下载。安装后,需要将OpenCV的Java库添加到项目中。

4.2 使用OpenCV进行图像读取和显示

以下是一个使用OpenCV读取和显示图像的示例:

代码语言:java
AI代码解释
复制
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.highgui.HighGui;

public class OpenCVImageDisplay {
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        String imagePath = "path/to/image.jpg";
        Mat image = Imgcodecs.imread(imagePath);
        HighGui.imshow("OpenCV Image Display", image);
        HighGui.waitKey();
    }
}
4.3 使用OpenCV进行图像滤波

以下是一个使用OpenCV进行图像模糊处理的示例:

代码语言:java
AI代码解释
复制
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.highgui.HighGui;

public class OpenCVFiltering {
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        String imagePath = "path/to/image.jpg";
        Mat image = Imgcodecs.imread(imagePath);
        Mat blurredImage = new Mat();
        Imgproc.GaussianBlur(image, blurredImage, new Size(15, 15), 0);
        HighGui.imshow("Blurred Image", blurredImage);
        HighGui.waitKey();
    }
}
4.4 使用OpenCV进行边缘检测

边缘检测是图像处理中常见的操作,可以使用OpenCV的Canny边缘检测算法来实现:

代码语言:java
AI代码解释
复制
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.highgui.HighGui;

public class OpenCVEdgeDetection {
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        String imagePath = "path/to/image.jpg";
        Mat image = Imgcodecs.imread(imagePath);
        Mat grayImage = new Mat();
        Mat edges = new Mat();
        Imgproc.cvtColor(image, grayImage, Imgproc.COLOR_BGR2GRAY);
        Imgproc.GaussianBlur(grayImage, grayImage, new Size(5, 5), 1.5);
        Imgproc.Canny(grayImage, edges, 100, 200);
        HighGui.imshow("Edge Detection", edges);
        HighGui.waitKey();
    }
}

五、使用ImageJ进行科学图像分析

ImageJ是一个开源的Java图像处理工具,广泛用于科学图像分析。以下介绍如何使用ImageJ进行一些基本的图像处理任务。

5.1 安装和配置ImageJ

首先,需要从这里下载并安装ImageJ。然后,可以在项目中使用ImageJ的Java库。

5.2 使用ImageJ进行图像读取和显示

以下是一个使用ImageJ读取和显示图像的示例:

代码语言:java
AI代码解释
复制
import ij.IJ;
import ij.ImagePlus;

public class ImageJImageDisplay {
    public static void main(String[] args) {
        String imagePath = "path/to/image.jpg";
        ImagePlus image = IJ.openImage(imagePath);
        image.show();
    }
}
5.3 使用ImageJ进行图像滤波

以下是一个使用ImageJ进行图像滤波的示例:

代码语言:java
AI代码解释
复制
import ij.IJ;
import ij.ImagePlus;
import ij.plugin.filter.GaussianBlur;

public class ImageJFiltering {
    public static void main(String[] args) {
        String imagePath = "path/to/image.jpg";
        ImagePlus image = IJ.openImage(imagePath);
        GaussianBlur blur = new GaussianBlur();
        blur.blurGaussian(image.getProcessor(), 2);
        image.show();
    }
}
5.4 使用ImageJ进行图像分析

ImageJ提供了丰富的图像分析工具,可以用于细胞计数、粒子分析等。以下是一个简单的粒子分析示例:

代码语言:java
AI代码解释
复制
import ij.IJ;
import ij.ImagePlus;
import ij.plugin.filter.ParticleAnalyzer;
import ij.process.ImageProcessor;

public class ImageJParticleAnalysis {
    public static void main(String[] args) {
        String imagePath = "path/to/image.jpg";
        ImagePlus image = IJ.openImage(imagePath);
        ImageProcessor processor = image.getProcessor();
        ParticleAnalyzer analyzer = new ParticleAnalyzer();
        analyzer.analyze(image);
        image.show();
    }
}

六、实战项目:使用Java和OpenCV构建简单的图像处理应用

在本节中,我们将结合之前介绍的知识,使用Java和OpenCV构建一个简单的图像处理应用,实现图像读取、显示、滤波、边缘检测等功能。

6.1 项目结构

我们的项目结构如下:

代码语言:java
AI代码解释
复制
ImageProcessingApp/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   ├── com/
│   │   │   │   ├── example/
│   │   │   │   │   ├── ImageProcessingApp.java
│   │   └── resources/
│   │       └── images/
│   │           └── sample.jpg
└── pom.xml
6.2 项目依赖

在项目的pom.xml文件中添加OpenCV依赖:

代码语言:xml
AI代码解释
复制
<dependencies>
    <dependency>
        <groupId>org.opencv</groupId>
        <artifactId>opencv</artifactId>
        <version>4.5.3</version>
    </dependency>
</dependencies>
6.3 实现图像处理应用

以下是ImageProcessingApp.java的完整代码:

代码语言:java
AI代码解释
复制
package com.example;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.highgui.HighGui;

public class ImageProcessingApp {
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        String imagePath = "src/main/resources/images/sample.jpg";
        Mat image = Imgcodecs.imread(imagePath);

        // 显示原始图像
        HighGui.imshow("Original Image", image);

        // 图像模糊处理
        Mat blurredImage = new Mat();
        Imgproc.GaussianBlur(image, blurredImage, new Size(15, 15), 0);
        HighGui.imshow("Blurred Image", blurredImage);

        // 边缘检测
        Mat edges = new Mat();
        Imgproc.cvtColor(image, edges, Imgproc.COLOR_BGR2GRAY);
        Imgproc.GaussianBlur(edges, edges, new Size(5, 5), 1.5);
        Imgproc.Canny(edges, edges, 100, 200);
        HighGui.imshow("Edge Detection", edges);

        // 等待按键
        HighGui.waitKey();
    }
}

结论

本文详细介绍了Java图像处理的基本概念和工具,并通过多个示例展示了如何使用Java AWT、Java 2D、JAI、OpenCV和ImageJ进行图像处理操作。通过结合这些工具,您可以实现各种图像处理任务,并将其应用于实际项目中。希望本文能够帮助您深入理解Java图像处理的基本原理和实践方法,为您的图像处理项目提供有力支持。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java版本OpenCV】无敌OpenCV越学越爽Java版代码持续更新(环境搭建|核心代码)
以上章节采免安装方式,所以安装章节可以直接跳过,节约点时间用springboot整合OpenCV(也可以用maven项目或者简单的java项目),主要是引入一个jar包和库文件,jar跨平台,库文件不跨平台,所以要区分windows和linux,至于工具idea就ok. 环境安装可以参考:springboot免安装整合Opencv兼容windows和linux
九转成圣
2024/04/10
2.1K0
【Java版本OpenCV】无敌OpenCV越学越爽Java版代码持续更新(环境搭建|核心代码)
两天两夜,1M图片优化到100kb!
坦白从宽吧,我就是那个花了两天两夜把 1M 图片优化到 100kb 的家伙——王小二!
沉默王二
2022/03/07
9880
两天两夜,1M图片优化到100kb!
用OpenCV加Robot打造Java版按键精灵
在日常生活开发中,我们时常遇到需要自动化完成的重复性任务,比如自动化测试,还记得在某银行开发某某通软件时,开发要辅助测试,每次项目上线后都要群里发100条消息,真的苦不堪言,每次发版后都要测试(因为之前出现过消息丢失),在比如游戏辅助,比如读取桌面,在桌面内进行人脸识别找到头部,然后鼠标移动到头部,按下鼠标左键进行射击(不要骂我哦,我没有开挂),再比如完成一些日常任务啥的
九转成圣
2024/04/10
3680
用OpenCV加Robot打造Java版按键精灵
🌟 Java图像识别之旅:从入门到实践的全面指南
这里推荐一篇实用的文章:《Java中POM模块互相引用问题的解决方案》,作者:【喵手】。
bug菌
2024/11/20
5200
🌟 Java图像识别之旅:从入门到实践的全面指南
Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
opencv官网下载windows安装包 https://opencv.org/releases/ 选择最新版4.1.1 下载完成后是一个opencv-4.1.1-vc14_vc15.exe,双击安装。
全栈程序员站长
2022/08/30
22.3K0
Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
Java 生成透明图片
设置图片透明import org.apache.commons.io.FilenameUtils;import org.apache.commons.io.IOUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.imageio.ImageIO;import javax.imageio.stream.ImageOutputStream;import javax.swing.\*;import java.awt.\*
IT小马哥
2022/12/31
1.1K0
OpenCV4.8 Java SDK实现YOLOv5模型部署
Java 开发的IDE,推荐选择IDEA这个,真的比较好用,我下载的是社区版,免费可用。
OpenCV学堂
2024/05/17
9701
OpenCV4.8 Java SDK实现YOLOv5模型部署
java生成二维码例子及Qrcode.jar包(demo小例子)
java生成二维码例子及Qrcode.jar包 #######获取地址: http://note.youdao.com/noteshare?id=dd9ec8a63ab3b97eba58bf7b32
挑战者
2018/06/29
1.6K0
Java基于百度AI+JavaCV+OpenCV 实现摄像头人数动态统计
【Java】人流量统计-动态版之视频转图识别请访问 http://ai.baidu.com/forum/topic/show/940413
小帅丶
2021/12/28
1.5K0
Java基于百度AI+JavaCV+OpenCV 实现摄像头人数动态统计
Tesseract ocr文字识别
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/77776697
bear_fish
2018/09/19
18.2K0
如何用Java实现人脸检测功能,在图片中查找人脸并标记出来?
Java是一门面向对象的编程语言,可以通过调用OpenCV库来实现人脸检测功能。OpenCV是一个开源计算机视觉库,其中包含许多用于图像处理和分析的函数和模块。下面我们将学习如何使用Java和OpenCV来实现人脸检测和标记出来。
用户1289394
2023/09/11
8780
如何用Java实现人脸检测功能,在图片中查找人脸并标记出来?
Java生成验证码的代码
package com.web; //验证码生成处理类 import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Line2D; import java.awt.image.BufferedIma
用户1503405
2021/09/23
1.2K0
Java---将图片置灰
package image; import java.awt.color.ColorSpace; import java.awt.image.BufferedImage; import java.awt.image.ColorConvertOp; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import j
IT云清
2019/01/22
7950
Java使用OpenCV进行答题卡识别
https://github.com/opencv/opencv/releases
码客说
2022/09/09
3K1
Java使用OpenCV进行答题卡识别
2018-03-01 thumbnailator图片处理接收Byte数组
thumbnailator工具以及Java原生的图片处理工具类,效率上还是原生的较好,不过thumbnailator提供的功能较全面也较简单,需要注意的是thumbnailator处理png格式的图片时,如果遇到透明背景的话,会处理成黑色的背景,处理方法就是在使用thumbnailator处理png图像之前将其背景图设置为白色,这是最简单有效的办法,各位看官如果有其他行之有效的方法,欢迎随时留言
Albert陈凯
2018/09/20
1.8K0
java工具类——验证码(VerifyCode)[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159571.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
2.1K0
java验证工具_「verifycode」java工具类——验证码(VerifyCode) – seo实验室
public class VerifyCode {private int w = 70;
全栈程序员站长
2022/09/14
6980
数字摄影师的秘密基地:如何用Java实现图像滤镜和调色功能?
图像滤镜和调色是程序员常常使用的工具,可以为照片增添特效和个性化。在Java中,我们可以利用图像处理库来实现图像滤镜和调色功能,下面将介绍如何使用Java来实现这些功能。
用户1289394
2024/04/15
1780
数字摄影师的秘密基地:如何用Java实现图像滤镜和调色功能?
如何使用Java快速地给图片转码和生成缩略图(Thumbnailator和webp-imageio-core的使用)
本文中介绍,如何使用Java优雅处理图片;包括:主流图片格式转码、图片压缩(缩略图生成)等。主要用到的外部工具包:
Mintimate
2021/01/26
8.3K1
如何使用Java快速地给图片转码和生成缩略图(Thumbnailator和webp-imageio-core的使用)
SpringBoot3.x和OCR构建车牌识别系统
本专题旨在展示 OCR 技术与 SpringBoot3.x 框架结合的广泛应用。我们会深入探讨它在医疗、金融、教育、交通、零售、公安等多个领域的现实应用。每个应用场景都会提供详细的实例、面临问题的分析与解决策略,以帮助您深入理解 OCR 技术在实践中的关键作用。让我们一同揭示 OCR 技术的无穷潜力。
程序员皮皮林
2024/10/22
3360
SpringBoot3.x和OCR构建车牌识别系统
推荐阅读
相关推荐
【Java版本OpenCV】无敌OpenCV越学越爽Java版代码持续更新(环境搭建|核心代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档