详解使用JavaCV/OpenCV抓取并存储摄像头图像
me.getCanvas().repaint(); } else { delta = -delta; count = 0; } count++; if(count>10) { timer.stop(); saveCurrentFrame(); } } } public static void main(String[] args) throws Exception { OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0); grabber.start(); CanvasFrame canvas = new CanvasFrame("Camera Capture"); canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final IplImage frame = grabber.grab(); canvas.showImage(frame); TimerAction ta = new TimerAction(canvas); Timer timer = new Timer(50, ta); timer.addActionListener(ta); canvas.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getButton()==MouseEvent.BUTTON1) { timer.start(); } } }); while(true) { frame = grabber.grab(); if(frame == null) break; canvas.showImage(frame); } cvReleaseImage(frame); grabber.stop(); canvas.dispose(); } static void saveCurrentFrame() { try { BufferedImage img = canvasFrame.getCanvas().getImage(); ImageIO.write(img, "jpg", new File(savedImageFile)); System.out.println("Image saved to: " + savedImageFile); } catch (IOException e) { e.printStackTrace(); } } } 在Java编程环境中,如果你需要利用摄像头进行图像捕捉和存储,JavaCV和OpenCV是两个非常有用的工具。JavaCV是一个Java接口,它提供了对多个计算机视觉库的访问,包括OpenCV。OpenCV是一个跨平台的计算机视觉库,包含了大量的图像处理和计算机视觉算法。 在这个例子中,我们创建了一个名为`CameraCapture`的类,它实现了以下功能: 1. **实时显示摄像头图像**:通过`OpenCVFrameGrabber`对象,我们可以连接到本地摄像头(参数为0表示默认摄像头),并使用`grab()`方法来获取每一帧图像。这些图像被显示在一个`CanvasFrame`上,这是JavaCV提供的用于显示IplImage对象的组件。 2. **点击捕获图像**:当用户在`CanvasFrame`上单击鼠标左键时,启动一个`Timer`对象,该对象会执行一个动画效果,即在图像周围画出一个逐渐扩大的矩形。这个动画结束后,当前的图像将被保存到硬盘上的指定文件(在本例中是`c:\\tmp\\my.jpg`)。 3. **图像存储**:`saveCurrentFrame()`方法用于将`CanvasFrame`当前显示的图像转换为`BufferedImage`,然后使用`ImageIO.write()`将其保存为JPEG格式的文件。 4. **程序关闭**:当用户点击JFrame的关闭按钮时,程序会停止摄像头捕获,释放相关资源,并关闭窗口。 为了运行这个程序,你需要确保已经在项目中添加了JavaCV和OpenCV的依赖库。此外,注意路径`savedImageFile`需要根据你的实际需求进行调整,以便保存的图片能保存在正确的位置。 JavaCV和OpenCV的结合使用使得在Java中进行摄像头图像处理变得相对简单。这个示例代码展示了如何从摄像头捕获实时图像,以及如何通过用户交互来保存特定时刻的图像,这在开发各种计算机视觉应用,如视频监控、人脸识别等场景中是非常基础且重要的功能。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 3
- 资源: 946
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)