在春节前夕,在陈哥的指导下,完成了美颜相机中一些滤镜效果的添加,但是之前滤镜效果的使用都是基于单独的图片,而我们的视频也是由一帧一帧的图片构成,所以我们在想完成美颜相机的情况下,首先要学会的是如何获取视频(javaOpenCV库,或者WebCamp),以下采用WebCamp作为实例!

将要实现的功能包括但不限定于:拍照,视频获取,录像,截图,人脸识别,特效..........

1.主程序的编写,主要还是运用awt和swing组件

package CL2.Draw0117.Video0123;
import javax.swing.*;
import java.awt.*;
public class VDraw {public void initt() {//窗体设置JFrame jf = new JFrame();//窗体大小设置jf.setSize(810,900);//窗体名称设置jf.setTitle("视频摄像捕捉");//退出进程设置jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setLocationRelativeTo(null);//窗体布局设置BorderLayout borderLayout=new BorderLayout();jf.setLayout(borderLayout);//中心窗体背景设置JPanel center=new JPanel();center.setBackground(Color.white);jf.add(center,BorderLayout.CENTER);//Vpixelmouse对象的创立,便于监听器的添加Vpixelmouse mouse=new Vpixelmouse();//菜单栏JMenuBar jmb = new JMenuBar();//菜单栏位置的固定jf.add(jmb,BorderLayout.NORTH);//菜单选项JMenu jmn = new JMenu("视频");jmb.add(jmn);//子菜单JMenuItem jmi = new JMenuItem("打开");JMenuItem jmi2 = new JMenuItem("关闭");jmn.add(jmi);jmn.add(jmi2);//可视一定要在画笔前jf.setVisible(true);mouse.g=center.getGraphics();//添加监听器jmi.addActionListener(mouse);jmi2.addActionListener(mouse);}public static void main(String[] args) {VDraw vDraw=new VDraw();vDraw.initt();}
}

2.

package CL2.Draw0117.Video0123;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class Vpixelmouse implements ActionListener {public Graphics g;//类来传递数据public Vthreadpixel vp;public boolean flag;public void actionPerformed(ActionEvent e){String st = e.getActionCommand();if ("打开".equals(st)) {// 启动多线程// 创建线程对象,显示该线程创建一次if (vp == null) {vp=new Vthreadpixel(g);// 启动线程vp.start();}} else if ("关闭".equals(st)) {vp.flag = false;System.out.println("关闭");}}public int[][] getImagePixel(String path) {File file = new File(path);// ImageIO:对图片文件进行I/O// 获取缓冲图片BufferedImage buffImage = null;try {buffImage = ImageIO.read(file);} catch (IOException e1) {e1.printStackTrace();}int w = buffImage.getWidth();int h = buffImage.getHeight();int[][] pixelArr = new int[w][h];// 获取图片中的每一个像素值保存到二维数组中for (int i = 0; i < w; i++) {for (int j = 0; j < h; j++) {int pixel = buffImage.getRGB(i, j);pixelArr[i][j] = pixel;}}return pixelArr;}
}

3.多线程的使用

package CL2.Draw0117.Video0123;import com.github.sarxos.webcam.Webcam;import java.awt.*;
import java.awt.image.BufferedImage;public class Vthreadpixel extends Thread {public Graphics g;//控制线程的标记public boolean flag = true;//初始化画笔对象public Vthreadpixel(Graphics g) {this.g = g;}// 启动线程后自定执行的方法// run 方法执行完,该线程结束,线程一旦结束不能再次启动public void run() {System.out.println("启动线程.."+this.getName());// 启动摄像头,放在线程中启动Webcam webcam=Webcam.getDefault();webcam.open();//while (flag) {// 获取摄像头拍到的数据BufferedImage bufferedImage=webcam.getImage();//大小的设置g.drawImage(bufferedImage,100,100,400,300,null);}}
}

4.效果如图

小浩浅谈之在Java中摄像头的使用相关推荐

  1. 小浩浅谈之Java美颜相机pc端(视频)

    在之前的文章中,给大家介绍了如果使用WebCamp来使用电脑的摄像头以及如何为图片添加各种滤镜,那么在这我们进行一个相互结合,就构成了一个我们pc端的美颜相机. 1.第一步和之前一样,就是框体 的创建 ...

  2. 小浩浅谈Java三特性(封装,继承,多态)

    1.封装,什么是封装,谈谈自己对封装的理解,封装就是将类的信息(比如说类的属性)隐藏在类的内部,不允许外部程序直接访问.此时就要提到一个关键字private,他是一个权限修饰符,可以用来修饰成员(变量 ...

  3. 小浩浅谈如何为图片提供滤镜功能

    近些天,一直想做一个pc版的美颜相机,但是万事开头总要有第一步,首先就是美颜相机的添加滤镜问题,直接上手视频未免过于着急,于是就想先对单张图片来实现滤镜功能的添加. 1.第一步,就是窗体和面板的创立, ...

  4. java javascript数组_浅谈javascript和java中的数组

    javascript中的数组 数组的创建 直接创建方式  var str = ['java', 'js']; 使用new创建方式: var a = new Array(10);  //  定义长度为1 ...

  5. 小浩浅谈利用Java做一个视频运动追踪识别

    寒假期间,一起做了一款pc端的美颜相机,在交流会期间,看到有的同学做了一些非常牛的功能添加,心血来潮,想整个视频运动追踪识别,在这和大家分析一下算法思路 1.原理很简单,就是在视频中的物体,就可以通过 ...

  6. 浅谈Android和java中的多线程下载

    为什么要使用多线程下载呢? 究其原因就一个字:"快",使用多线程下载的速度远比单线程的下载速度要快,说到下载速度,决定下载速度的因素一般有两个: 一个是客户端实际的网速,另一个则是 ...

  7. 小浩浅谈 程序/进程/线程,并行/并发

    1.程序,随着时代和社会的发展,我们开始学习各种各样的计算机语言,开始离不开编程,但是我们需要了解的是,什么是程序?程序代表什么?以及程序的作用?以及我们编程,编写程序是为了干嘛? 在这,我认为程序指 ...

  8. python语法中infile语句_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  9. php编码 js解码,浅谈php和js中json的编码和解码

    php中 1)编码 $jsonstr = json_encode($array) 2)解码 $arr = json_decode($jsonstr) echo json_encode("中文 ...

最新文章

  1. B/S系统常见缺陷整理和解决方案
  2. 组件生命周期管理和通信方案
  3. leetcode -python 三数之和原创
  4. jeecms内容管理系统使用了哪些技术
  5. windows下的gvim配置
  6. 【Linux】排序命令sort
  7. sqlserver 判断字段是否为空字符串或者null
  8. JAVA中list,set,数组之间的转换详解
  9. 使用git命令把自己的代码上传到gitlab上
  10. 充电水滴融合特效 html+css
  11. 图片马赛克去除工具_黑科技!利用 AI 技术,马赛克终于可以去掉了
  12. 【24】搭建FCN语义分割网络完成自己数据库图像分割(1)
  13. 三星新硬盘 旧硬盘_我应该如何存放旧硬盘和电子组件?
  14. Python3的fo if while 循环
  15. 经典语录~想要的东西立马去买,想做的事情马上去做,想见的人立马去见
  16. 狼人杀未能连接服务器,玩狼人杀最不能惹的五个职业!连心理专家都排不到第一?...
  17. Laravel 数据库去重计数
  18. sublist3r报错解决
  19. DenseNet(Densely Connected Convolutional Networks)学习笔记
  20. UIL(单例框架)Android-Universal-Image-Loader (图片加载框架)

热门文章

  1. 服务器win2003修复,win2003紧急修复磁盘的启动和使用的方法介绍
  2. IOS开发笔记之推广安装(用网页判断是否安装App)
  3. java通过JNA访问DLL
  4. 微商,本来是个很有创意的商业模式
  5. 【狂神说Java】POI技术详解
  6. Springboot项目中通过谷歌的guava实现令牌桶算法,来进行请求限流
  7. win32程序 API函数 DeleteFile(),文件删除
  8. 移动端——常见的移动端mate
  9. Ubuntu 14.04 安装 SteamOS 会话
  10. java与c语言的优劣势_C语言和Java的优缺点