Java与Eclipse下载与使用,OpenCv在Eclipse上的使用与简单实例(打开摄像头画面)

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)



7. 配置好以上后,效果如下:

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摄像头)


 好咯!  本博客到此结束了! 希望可以帮助到大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章