JavaCV是一个针对Java编程语言的开源计算机视觉和机器学习库。它为各种流行的计算机视觉和图像处理库(如OpenCV、FFmpeg等)提供了Java包装,使Java开发人员能够在其Java应用程序中访问这些库的功能,无需编写本地代码。
JavaCV提供了广泛的功能,包括图像和视频处理、对象检测和识别、人脸分析、光学字符识别(OCR)、相机校准、视频流传输等。它特别适用于开发涉及实时图像和视频处理、计算机视觉任务和机器学习实验的应用程序。
JavaCV的一些主要组件和功能包括:
-
OpenCV包装:JavaCV允许开发人员在Java应用程序中直接使用OpenCV函数。OpenCV是一种流行的计算机视觉库,提供了各种用于图像和视频分析的工具。
-
FFmpeg包装:JavaCV提供了对FFmpeg的访问,这是一个处理音频和视频数据的强大多媒体框架。这使得开发人员可以处理视频文件、捕获视频流,并执行各种与视频相关的任务。
-
深度学习集成:JavaCV支持与Deeplearning4j和TensorFlow等深度学习库集成。这使开发人员能够将神经网络和深度学习模型融入其Java应用程序中。
-
相机和视频捕获:JavaCV提供了从摄像头捕获视频流、录制视频文件以及执行图像稳定和运动检测等任务的工具。
-
图像处理:开发人员可以使用JavaCV执行各种图像处理任务,包括滤波、边缘检测、颜色处理等。
-
对象检测和跟踪:JavaCV包括使用各种算法在图像和视频中检测和跟踪对象的工具。
-
人脸检测和识别:该库支持人脸分析任务,如在图像中检测人脸并根据面部特征识别个体。
helloworld 示例:
新建springboot 项目,版本不一定要用我这个版本。参照你们自己的也行。
引入架包
<dependency>
<groupId>org.openpnp</groupId>
<artifactId>opencv</artifactId>
<version>4.5.5-1</version>
</dependency>
示例:读取图片并打印图片的宽高,opencv python 中imread.
package com.example.javacvstudy;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class JavacvStudyApplicationTests {
public static void main(String[] args) {
// 加载OpenCV库
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 读取图片
String imagePath = "opencv.jpg"; // 替换为您的图片路径
Mat image = Imgcodecs.imread(imagePath);
// 检查是否成功读取图片
if (image.empty()) {
System.out.println("无法读取图片");
} else {
System.out.println("成功读取图片,宽度: " + image.width() + ", 高度: " + image.height());
}
}
}
运行上面代码后会报错,无法读取的图片,即使图片就在当前代码运行文件的目录下,上面的图片路径需要改成绝对路径
运行结果:
成功读取图片,宽度: 320, 高度: 480
读取后并显示出来
代码如下:
package com.example.javacvstudy;
import org.junit.jupiter.api.Test;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class JavacvStudyApplicationTests {
public static void main(String[] args) {
// 加载OpenCV库
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 读取图片
String imagePath = "D:\\ai\\javacv-study\\src\\test\\java\\com\\example\\javacvstudy\\opencv.jpg"; // 替换为您的图片路径
Mat image = Imgcodecs.imread(imagePath);
// 检查是否成功读取图片
if (image.empty()) {
System.out.println("无法读取图片");
} else {
System.out.println("成功读取图片,宽度: " + image.width() + ", 高度: " + image.height());
}
// 显示图片
HighGui.imshow("Image", image); // 显示图像窗口
HighGui.waitKey(); // 等待按键事件
HighGui.destroyAllWindows(); // 关闭所有窗口
}
}