我参考了两篇文献写成的该文件(也可以说抄袭)
-
package orgwechat;
-
-
-
import org.opencv.core.*;
-
import org.opencv.imgcodecs.Imgcodecs;
-
-
-
-
-
import javax.swing.*;
-
import java.awt.*;
-
import java.awt.image.BufferedImage;
-
import java.awt.image.DataBufferByte;
-
-
-
-
-
class ImageViewer{
-
-
-
/**
-
* Created by kofee on 2016/3/28.
-
*/
-
-
-
private JLabel imageView;
-
-
-
private Mat image;
-
private String windowName;
-
-
-
/**
-
* 如果使用junit测试时调用该方法,图像会一闪而过,可通过sleep()等方式暂时显示
-
*
-
* @param
-
*/
-
-
-
public ImageViewer(Mat image) {
-
this.image = image;
-
}
-
-
-
-
-
/**
-
* @param image 要显示的mat
-
* @param windowName 窗口标题
-
*/
-
public ImageViewer(Mat image, String windowName) {
-
this.image = image;
-
this.windowName = windowName;
-
}
-
-
-
/**
-
* 图片显示
-
*/
-
public void imshow() {
-
setSystemLookAndFeel();
-
Image loadedImage = toBufferedImage(image);
-
JFrame frame = createJFrame(windowName, image.width(), image.height());
-
imageView.setIcon(new ImageIcon(loadedImage));
-
frame.pack();
-
frame.setLocationRelativeTo(null);
-
frame.setVisible(true);
-
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 用户点击窗口关闭
-
}
-
-
-
private void setSystemLookAndFeel() {
-
try {
-
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-
} catch (ClassNotFoundException e) {
-
e.printStackTrace();
-
} catch (InstantiationException e) {
-
e.printStackTrace();
-
} catch (IllegalAccessException e) {
-
e.printStackTrace();
-
} catch (UnsupportedLookAndFeelException e) {
-
e.printStackTrace();
-
}
-
}
-
-
-
private JFrame createJFrame(String windowName, int width, int height) {
-
JFrame frame = new JFrame(windowName);
-
imageView = new JLabel();
-
final JScrollPane imageScrollPane = new JScrollPane(imageView);
-
imageScrollPane.setPreferredSize(new Dimension(width, height));
-
frame.add(imageScrollPane, BorderLayout.CENTER);
-
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
-
return frame;
-
}
-
-
-
-
-
private Image toBufferedImage(Mat matrix) {
-
int type = BufferedImage.TYPE_BYTE_GRAY;
-
if (matrix.channels() > 1) {
-
type = BufferedImage.TYPE_3BYTE_BGR;
-
}
-
int bufferSize = matrix.channels() * matrix.cols() * matrix.rows();
-
byte[] buffer = new byte[bufferSize];
-
matrix.get(0, 0, buffer); // 获取所有的像素点
-
BufferedImage image = new BufferedImage(matrix.cols(), matrix.rows(), type);
-
final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
-
System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);
-
return image;
-
}
-
-
}
-
public class ShowPicture{
-
static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}
-
public static void main(String[] args) {
-
Mat mat =Imgcodecs.imread("C:/Users/hasee/Desktop/wei.png");
-
ImageViewer imageViewer = new ImageViewer(mat, "第一幅图片");
-
imageViewer.imshow();
-
}
-
}
在我们原本看的代码里面他缺少了全部的过程,我进行全部的合成。不过我在这个代码理解上面还是有欠缺。还得继续努力。
这段代码“static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}”意味着可以访问外部的文件,也就是本地库的文件像C,D,E的盘不然只能在该文件夹里面加在图片。缺少上述代码会出现下面的错误:
-
Exceptioninthread "main" java.lang.UnsatisfiedLinkError:
org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J
-
at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)
-
at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:118)
-
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 {