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)
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攝像頭)
好咯! 本博客到此結束了! 希望可以幫助到大家!