openCV在Java中的使用
发表于2020-07-05,长度1660,
271个单词,
4分钟读完
opencv试一个C语言实现的用于操作多媒体文件的库。以前使用它基本都是通过Python来实现对图片或者音视频文件的处理,这里简单说一下通过Java调用openCV 库的一种方法。当然为了更具直观性,我们和python对比一下。
通过Python 改变图片的大小
python 调用opencv非常简单。安装如下:
pip install opencv-python
需要使用python3
处理图片分三步:读取、改变大小、保存。这三步也对应了三个函数:
>>> import cv2
>>> image = cv2.imread('/Users/sheldon/Pictures/plane.jpg')
>>> new_img = cv2.resize(image, (1000,1000))
>>> cv2.imwrite('/Users/sheldon/Pictures/newPlane.jpg', new_img)
True
上面我们把plane.jpg改成大小1000x1000像素的新图片并保存(不影响原图片)。
通过Java调用openCV
上面看到opencv处理图片异常简单。其实通过Java也一样,因为它们后端调用的是相同的本地库。
使用Java的话,首先要把openCV 的封装类拉下来,这里使用maven:
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv-platform</artifactId>
<version>4.3.0-1.5.3</version>
</dependency>
业务代码如下:
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.Size;
import static org.bytedeco.opencv.global.opencv_imgcodecs.imread;
import static org.bytedeco.opencv.global.opencv_imgcodecs.imwrite;
import static org.bytedeco.opencv.global.opencv_imgproc.INTER_LINEAR;
import static org.bytedeco.opencv.global.opencv_imgproc.resize;
public class ResizeImg {
public static void main(String[] args) {
Mat imread = imread("/Users/sheldon/Pictures/5.jpg");
Mat dst = new Mat();
resize(imread, dst, new Size(), 0.5, 0.5, INTER_LINEAR);
imwrite("/Users/sheldon/Pictures/4.jpg", dst);
}
}
看到代码也差不多是3句。
这里多说一句:上面引入了一个操作openCV 本地库的包装工具,叫bytedeco。这是一个开源工具,提供了大量通过Java本地调用常用库的入口。比如ffmpeg,比如tensorflow。大家有兴趣可以探索一下,地址在https://github.com/bytedeco/javacpp-presets。这里用到的OpenCV也是其中一套:https://github.com/bytedeco/javacpp-presets/tree/master/opencv
Written on July 5, 2020
分类:
dev,
标签:
java
如果你喜欢,请赞赏!
