文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

利用JavaCV如何实现抓取并保存摄像头的影像

2023-05-31 16:24

关注

今天就跟大家聊聊有关利用JavaCV如何实现抓取并保存摄像头的影像,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

实现:

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;   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();   }  } 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯