Java与Eclipse下载与使用,OpenCv在Eclipse上的使用与简单实例(打开摄像头画面)
!!!转载请注明出处!!!
一、Eclipse下载与安装
1. 在Eclipse官网download个软件包即可,64位计算机下载x64,32位计算机下载x32,如下图:
2. 双击打开并压缩下载好的Eclipse的rar文件到 D:\eclipse :
打开解压好的文件夹 D:\eclipse中的eclipse应用程序
如果电脑上是没有java环境的话,会出现如下图类似的错误,说明我们缺少jre环境
二、JAVA的下载安装
1. 需要再下载个JAVA jre(版本可以自行选择,作者在下载的时候由于没有Windows32的JAVA SE 10版本的jre,所以选择了JAVA SE 8版本的)
如下图所示的版本:
2. 找到下载好的jre的exe文件,双击默认安装即可
3. (1) 再次打开 D:\eclipse中的eclipse应用程序,这时候应该可以看到eclipse弹出的选择workspace的界面:
workspace就是在Eclipse上的java程序的存储位置,可以自行更改
(2)打开后界面如下,关闭welcome就可以看到Eclipse的真实面目了
至此,JAVA已经可以在Eclipse上遨游咯!
可以创建个试一试,New-> Java Project -> 名称输入“Hello”-> 直接 点击“Finish” 即可创建一个新工程
File -> New -> Class -> 输入类名为“Hello_Test” -> Finish ,将以下代码输入并运行:
public class hello_test {
public static void main(String[] args) {
System.out.println("Hello Java");
}
}
可以看到如下的结果:
三、OpenCv的下载
1. 配置引入OpenCV相关jar包,首先要下载OpenCV的自解压版本,点这里下载,选择一个最新的版本
下载Windows自解压开发包,下载好了双击解压缩之后找到build路径,显示如下:
打开java文件夹
2. 现在,我会将OpenCV作为一个用户库配置进Eclipse,这样我们在开发项目时就不用每次都配置相关文件了。打开Eclipse,然后在菜单中选择Window->Preferences,如图:
3. Java->Build Path->User Libraries,然后点击New...
4. 输入名字,比如:OpenCV-3.4.1,作为新的库名。
5. 选择你刚才创建的用户库,然后点击Add External JARs...
6. 浏览 到 E:\OpenCv\opencv\build\java,然后选择 opencv-341.jar,然后加载这个jar包,并展开 opencv-341.jar ,之后选择 Native library location ,之后点击 Edit...
6. 选择 External Folder... ,然后浏览选择文件夹 E:\OpenCv\opencv\build\java\x86(这里如果是64位操作系统则选择x64)
![](https://i-blog.csdnimg.cn/blog_migrate/27608c1a84a7098342e7668fc0987d2b.png)
Apply and close
四、创建简单的项目验证配置是否成功
1. 创建一个项目比如OpenCvDemo
2. 右击新建项目,Build Path -> Configure Build Path
3. Libraries -> Add Library... ,弹出 Add Library对话框,选择User Library -> Next
4. 选择OpenCv-3.4.1 - > Finish
5. 像这样 :
6. Apply and Close
7. 效果图像这样:
8. new class 如 CaptureBasic,其代码如下:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.*;
import java.awt.image.BufferedImage;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.Videoio;
public class CaptureBasic extends JPanel {
private static final long serialVersionUID=1L;
private BufferedImage mImg;
private BufferedImage mat2BI(Mat mat)
{
int dataSize =mat.cols()*mat.rows()*(int)mat.elemSize();
byte[] data=new byte[dataSize];
mat.get(0, 0,data);
int type=mat.channels()==1?
BufferedImage.TYPE_BYTE_GRAY:BufferedImage.TYPE_3BYTE_BGR;
if(type==BufferedImage.TYPE_3BYTE_BGR)
{
for(int i=0;i<dataSize;i+=3)
{
byte blue=data[i+0];
data[i+0]=data[i+2];
data[i+2]=blue;
}
}
BufferedImage image=new BufferedImage(mat.cols(),mat.rows(),type);
image.getRaster().setDataElements(0, 0, mat.cols(), mat.rows(), data);
return image;
}
public void paintComponent(Graphics g){
if(mImg!=null){
g.drawImage(mImg, 0, 0, mImg.getWidth(),mImg.getHeight(),this);
}
}
public static void main(String[] args) {
try{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat capImg=new Mat();
VideoCapture capture=new VideoCapture(0);
int height = (int)capture.get(Videoio.CAP_PROP_FRAME_HEIGHT);
int width = (int)capture.get(Videoio.CAP_PROP_FRAME_WIDTH);
if(height==0||width==0){
throw new Exception("camera not found!");
}
JFrame frame=new JFrame("camera");
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
CaptureBasic panel=new CaptureBasic();
frame.setContentPane(panel);
frame.setVisible(true);
frame.setSize(width+frame.getInsets().left+frame.getInsets().right,
height+frame.getInsets().top+frame.getInsets().bottom);
while(frame.isShowing()){
capture.read(capImg);
panel.mImg=panel.mat2BI(capImg);
panel.repaint();
}
capture.release();
frame.dispose();
}catch(Exception e){
System.out.println("例外:" + e);
}finally{
System.out.println("--done--");
}
}
}
运行后的结果如下:
(原谅我找出来的画质可怜的USB摄像头)
好咯! 本博客到此结束了! 希望可以帮助到大家!