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攝像頭)


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

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