OpenCV-Java版学习(2.图像入门)

  图像入门

  一.在Java中使用OpenCV注意事项

  1.解决awt报错问题

  先给大家贴个错误,如下图:

  我们在使用awt处理图像的时候报了这个异常,HeadlessException 异常是在环境中不支持键盘、显示器或鼠标的环境中调用与键盘、显示器或鼠标有关的代码时,被抛出的异常。

  网上有几种解决方法,比较方便的一种解决方法如下:

  System.setProperty("java.awt.headless", "false");

  这段代码激活了Headless模式,Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。

  这段代码相当于告诉程序,现在你要工作在Headless模式下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来。

  2.加载动态库

  这里我们在Java中调用一下dll就行了,如下:

  URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java451.dll");//这里的dll根据你自己的实际情况写

  System.load(url.getPath());

  二.读取图像和显示图像

  在OpenCV中我们可以使用imread()函数来进行图像的读取。图像的工作目录或图像的完整路径应给出。

  该函数的定义如下:

  static Mat imread(String filename) 大连无痛人流哪家好  http://mobile.120wtrlyy.com/

  static Mat imread(String filename, int flags)

  flags是一个标志,它表示以何种方式来读取图像,它有常用的3个值,如下:

  IMREAD_COLOR = 1:加载彩色图像。任何图像的透明度都会被忽视。它是默认标志;

  IMREAD_GRAYSCALE = 0:以灰度模式加载图像;

  IMREAD_UNCHANGED = -1:加载图像,包括alpha通道。

  当然我们也可以在源码中查看其他的值,如下:

  在OpenCV中我们可以使用imshow()函数来在窗口中显示图像,窗口自动适应图像的尺寸,该函数使用如下:

  public static void imshow(String winname, Mat img);

  第一个参数是窗口名称,它是一个字符串。第二个参数是我们读取图片的对象。

  图像读取和显示的代码如下:

  import org.junit.jupiter.api.Test;

  import org.opencv.core.Mat;

  import org.springframework.boot.test.context.SpringBootTest;

  import java.net.URL;

  import static org.opencv.highgui.HighGui.*;

  import static org.opencv.imgcodecs.Imgcodecs.imread;

  @SpringBootTest

  class DemoApplicationTests { @Test public void testOpencv1() throws Exception { // 解决awt报错问题 System.setProperty("java.awt.headless", "false"); // 加载动态库 URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java451.dll"); System.load(url.getPath()); // 读取图像,以彩色模式(1)显示,0是灰度模式,-1是加载图像,包括alpha通道 Mat src = imread("D:\\OpenCV_Study\\demo1\\src\\main\\resources\\image\\test1.jpg",1); if (src.empty()) { throw new Exception("image is empty"); } imshow("image",src); waitKey(0); destroyAllWindows(); }

  }


请使用浏览器的分享功能分享到微信等