我参考了两篇文献写成的该文件(也可以说抄袭)

  1. package orgwechat;


  2. import org.opencv.core.*;
  3. import org.opencv.imgcodecs.Imgcodecs;




  4. import javax.swing.*;
  5. import java.awt.*;
  6. import java.awt.image.BufferedImage;
  7. import java.awt.image.DataBufferByte;




  8. class ImageViewer{


  9. /**
  10. * Created by kofee on 2016/3/28.
  11. */


  12. private JLabel imageView;


  13. private Mat image;
  14. private String windowName;


  15. /**
  16. * 如果使用junit测试时调用该方法,图像会一闪而过,可通过sleep()等方式暂时显示
  17. *
  18. * @param
  19. */


  20. public  ImageViewer(Mat image) {
  21. this.image = image;
  22. }




  23. /**
  24. * @param image      要显示的mat
  25. * @param windowName 窗口标题
  26. */
  27. public  ImageViewer(Mat image, String windowName) {
  28. this.image = image;
  29. this.windowName = windowName;
  30. }


  31. /**
  32. * 图片显示
  33. */
  34. public void imshow() {
  35. setSystemLookAndFeel();
  36. Image loadedImage = toBufferedImage(image);
  37. JFrame frame = createJFrame(windowName, image.width(), image.height());
  38. imageView.setIcon(new ImageIcon(loadedImage));
  39. frame.pack();
  40. frame.setLocationRelativeTo(null);
  41. frame.setVisible(true);
  42. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 用户点击窗口关闭
  43. }


  44. private void setSystemLookAndFeel() {
  45. try {
  46. UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  47. } catch (ClassNotFoundException e) {
  48. e.printStackTrace();
  49. } catch (InstantiationException e) {
  50. e.printStackTrace();
  51. } catch (IllegalAccessException e) {
  52. e.printStackTrace();
  53. } catch (UnsupportedLookAndFeelException e) {
  54. e.printStackTrace();
  55. }
  56. }


  57. private JFrame createJFrame(String windowName, int width, int height) {
  58. JFrame frame = new JFrame(windowName);
  59. imageView = new JLabel();
  60. final JScrollPane imageScrollPane = new JScrollPane(imageView);
  61. imageScrollPane.setPreferredSize(new Dimension(width, height));
  62. frame.add(imageScrollPane, BorderLayout.CENTER);
  63. frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  64. return frame;
  65. }




  66. private Image toBufferedImage(Mat matrix) {
  67. int type = BufferedImage.TYPE_BYTE_GRAY;
  68. if (matrix.channels() > 1) {
  69. type = BufferedImage.TYPE_3BYTE_BGR;
  70. }
  71. int bufferSize = matrix.channels() * matrix.cols() * matrix.rows();
  72. byte[] buffer = new byte[bufferSize];
  73. matrix.get(0, 0, buffer); // 获取所有的像素点
  74. BufferedImage image = new BufferedImage(matrix.cols(), matrix.rows(), type);
  75. final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
  76. System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);
  77. return image;
  78. }

  79. }
  80. public class ShowPicture{
  81. static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}
  82. public static void main(String[] args) {
  83. Mat mat =Imgcodecs.imread("C:/Users/hasee/Desktop/wei.png");
  84. ImageViewer imageViewer = new ImageViewer(mat, "第一幅图片");
  85. imageViewer.imshow();
  86. }
  87. }
在我们原本看的代码里面他缺少了全部的过程,我进行全部的合成。不过我在这个代码理解上面还是有欠缺。还得继续努力。

这段代码“static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}”意味着可以访问外部的文件,也就是本地库的文件像C,D,E的盘不然只能在该文件夹里面加在图片。缺少上述代码会出现下面的错误:

  1. Exceptioninthread "main" java.lang.UnsatisfiedLinkError:
org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J
  1. at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)
  2. at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:118)
  3. at orgwechat.ShowPicture.main(ShowPicture.java:101)

经过运行后所得的结果:


该图是我偷的文章https://www.cnblogs.com/superbool/p/5331196.html的图,原图没有就不搞了。希望该文作者见谅。

参考文献:

https://www.cnblogs.com/superbool/p/5331196.html

http://blog.csdn.net/u012343179/article/details/68063432

赠送jar包: opencv -4.5.5-1.5.7.jar; 赠送原API文档: opencv -4.5.5-1.5.7- java doc.jar; 赠送源代码: opencv -4.5.5-1.5.7-sources.jar; 赠送Maven依赖信息文件: opencv -4.5.5-1.5.7.pom; 包含翻译后的API文档: opencv -4.5.5-1.5.7- java doc-API文档-中文(简体)版.zip; Maven坐标:org.bytedeco: opencv :4.5.5-1.5.7; 标签:bytedeco、 opencv 、中文文档、jar包、 java 使用 方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心 使用 。 想 使用 java 做图像处理,对比下两张 图片 的相似度。查资料发现 java cv可以 使用 ,没想到实际操作还是困难不少。首先,pom依赖问题:    关于maven配置问题,查看 java cv的githud 网址 https://github.com/bytedeco/ java cv,pom配置如下:<dependency> <groupId>org.bytedeco</g... 这个错误是由于在 读取 文件时候,没有加载dll文件所致,代码如下: import org. opencv .core.Mat; import org. opencv .imgcodecs.Imgcodecs; import com.tester.jmx.JmxGenerate; public class ... 踩坑记录 java .lang.UnsatisfiedLinkError: org. opencv .imgcodecs.Imgcodecs.imread_1(L java /lang/String;)J springboot2.1.6,web项目调用 openCV ,报错: java .lang.UnsatisfiedLinkError: org. opencv .imgcodecs.Imgcodecs.imrea... 学习目标: 2021-10-31 10:43:44.832 3524-3584/com.hjcamera E/com.hjcamera: No implementation found for long org. opencv .imgcodecs.Imgcodecs.imread_1( java .lang.String) (tried Java _org_ opencv _imgcodecs_Imgcodecs_imread_11 and 问题原因,复制拷贝导入module不完全,丢失了必要的so文件 学习内容: 本来想放弃 使用 BufferedImage OpenCV 处理图像,但我试了 Maven 直接加入依赖后发现频频报错,网上搜的资料教程又太少,折腾了好久,还是记录下来方便大家吧! 此教程针对 Mac OS 环境 OpenCV for Java 运行时抛出异常: Exception in thread "main" java .lang.UnsatisfiedLinkError: or... 文章目录1. org. opencv .imgcodecs2. Imgcodes 方法3 图片 读入4 图像输出 1. org. opencv .imgcodecs imgcodecs = image + codec,由名称可知,肯定与图像的编解码有关, opencv 通过该模块,对各种格式类型的 图片 进行解码,载入并创建 生成对应的 Mat 对象,或者,将 程序 中的 Mat 对象,输出为指定格式的 图片 文件。 2. Imgcodes 方法 java .lang.UnsatisfiedLinkError: No implementation found for long org. opencv .imgcodecs.Imgcodecs.imread_1 ( java .lang.String) (tried Java _org_ opencv _imgcodecs_Imgcodecs_imread_11 and Java _org_ opencv _imgcodecs_Imgcodecs_imread_11__L java _lang_String_2) 上一篇介绍了 Java 版本的 OpenCV 环境配置以及第一个示例 程序 ,在第一个示例 程序 中,只是 使用 了控制台输出的方式,打印图像mat对象的一些信息,没有 使用 GUI形式展示出来。而且 程序 的结构以及运行方式等也没有做详细的介绍。这篇文章就这些问题展开详细的说明,为了有直观的认识,先把这篇文章要实现的效果展现出来,如下图,换了一张大图来展示。   具体调用的方法如下就两行,new一个对象然后调用ims 如何利用 java 读取 网络照片 Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许 程序 员以优雅的思维方式进行复杂的`编程。以下是小编为大家搜索整理的如何利用 java 读取 网络照片,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!import java .io.BufferedInputStream;import java .io.BufferedOutputStre... 在C++ 显示 图片 OpenCV 为其提供了一个叫做HighGUI的接口,尚且没有在 java 中实现。 OpenCV 支持有限的 图片 格式,具体可参阅官方文档(常用的支持bmp、jpeg、png、tiff),可以 使用 Imgcodecs类的imread方法来 读取 图片 (注意测试时,路径不要包括中文): 结构目录(Eclipse中): 创建两个类: OpenCV Test 和 ImageViewer import org. opencv .core.CvType; import org. opencv .core.Mat; import org. opencv .core.Core; import org. opencv .imgcodecs.Imgcodecs; import origami.Origami; public class HelloCv {