一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 詳解使用JavaCV/OpenCV抓取并存儲攝像頭圖像

詳解使用JavaCV/OpenCV抓取并存儲攝像頭圖像

2020-09-08 10:53ljsspace Java教程

本篇文章主要介紹了使用JavaCV/OpenCV抓取并存儲攝像頭圖像,實(shí)例分析了使用JavaCV/OpenCV抓取并存儲攝像頭圖像的技巧,非常具有實(shí)用價值,需要的朋友可以參考下

本程序通過JFrame實(shí)時顯示本機(jī)攝像頭圖像,并將圖像存儲到一個緩沖區(qū),當(dāng)用戶用鼠標(biāo)點(diǎn)擊JFrame中任何區(qū)域時,顯示抓取圖像的簡單動畫,同時保存緩沖區(qū)的圖像到磁盤文件中。點(diǎn)擊JFrame關(guān)閉按鈕可以退出程序。

實(shí)現(xiàn):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.Timer;
 
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import static com.googlecode.javacv.cpp.opencv_core.cvReleaseImage;
 
/**
 *
 * Use JavaCV/OpenCV to capture camera images
 *
 * There are two functions in this demo:
 * 1) show real-time camera images
 * 2) capture camera images by mouse-clicking anywhere in the JFrame,
 * the jpg file is saved in a hard-coded path.
 *
 * @author ljs
 * 2011-08-19
 *
 */
public class CameraCapture {
  public static String savedImageFile = "c:\\tmp\\my.jpg";
   
  //timer for image capture animation
  static class TimerAction implements ActionListener {
    private Graphics2D g;
    private CanvasFrame canvasFrame;
    private int width,height;
     
    private int delta=10;
    private int count = 0;
     
    private Timer timer;
    public void setTimer(Timer timer){
      this.timer = timer;
    }
      
    public TimerAction(CanvasFrame canvasFrame){
      this.g = (Graphics2D)canvasFrame.getCanvas().getGraphics(); 
      this.canvasFrame = canvasFrame;
      this.width = canvasFrame.getCanvas().getWidth();
      this.height = canvasFrame.getCanvas().getHeight();
    }
    public void actionPerformed(ActionEvent e) {
      int offset = delta*count;
      if(width-offset>=offset && height-offset >= offset) {    
        g.drawRect(offset, offset, width-2*offset, height-2*offset);
        canvasFrame.repaint();
        count++;
      }else{
        //when animation is done, reset count and stop timer.
        timer.stop();
        count = 0;
      }      
    }
  }
 
  public static void main(String[] args) throws Exception {
    //open camera source
    OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
    grabber.start();
     
    //create a frame for real-time image display
    CanvasFrame canvasFrame = new CanvasFrame("Camera");
    IplImage image = grabber.grab();
    int width = image.width();
    int height = image.height();
    canvasFrame.setCanvasSize(width, height);
     
    //onscreen buffer for image capture
    final BufferedImage bImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics2D bGraphics = bImage.createGraphics();   
     
    //animation timer
    TimerAction timerAction = new TimerAction(canvasFrame);
    final Timer timer=new Timer(10, timerAction);
    timerAction.setTimer(timer);
      
    //click the frame to capture an image
    canvasFrame.getCanvas().addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e){   
        timer.start(); //start animation
        try {
          ImageIO.write(bImage, "jpg", new File(savedImageFile));
        } catch (IOException e1) {
          e1.printStackTrace();
        }          
      }        
    });
     
    //real-time image display
    while(canvasFrame.isVisible() && (image=grabber.grab()) != null){
      if(!timer.isRunning()) { //when animation is on, pause real-time display
        canvasFrame.showImage(image);  
        //draw the onscreen image simutaneously
        bGraphics.drawImage(image.getBufferedImage(),null,0,0); 
      }
    }
     
    //release resources
    cvReleaseImage(image);  
    grabber.stop();
    canvasFrame.dispose();
  }
 
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://blog.csdn.net/ljsspace/article/details/6702178

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产大片免费在线观看 | 欧美一卡2卡3卡无卡 | 美女精品永久福利在线 | 99re8在这里只有精品2 | 成人亚洲欧美日韩在线观看 | 日韩在线中文字幕 | 丁香久久婷婷 | 暖暖的视频完整视频韩国免费 | 学校捏奶揉下面污文h | 999精品视频这里只有精品 | 美女扒开奶罩让男人吃奶 | 激情视频图片小说qvdo | 91久久精品视频 | 欧美视频一级 | 无人在线观看免费高清视频播放 | 免费二级毛片免费完整视频 | np小说h| 成人国产精品一级毛片视频 | 亚洲欧美日韩中文字幕久久 | 婷婷影院在线观看 | 美日毛片 | 国产婷婷成人久久av免费高清 | 456亚洲人成高清在线 | 国产欧美一区二区精品性色99 | 貂蝉沦为姓奴小说 | 图片专区亚洲欧美另类 | 人禽l交免费视频观看+视频 | 91一个人的在线观看www | 国产综合成色在线视频 | 日韩精品成人在线 | 国产在线精品一区二区高清不卡 | 国产91精品在线播放 | 美女露尿口 | 日本高清在线观看天码888 | avidolz性教师| 草莓秋葵菠萝蜜绿巨人污 | 久久成人a毛片免费观看网站 | 日韩xx00| 日韩福利一区 | 激情另类国内一区二区视频 | 国产美女屁股直流白浆视频无遮挡 |