java视频抓拍代码 java做视频监控

java如何截取视频的?。?生成一个图片就是可以使用ffmpeg,下载ffmpeg相关组件到电脑中 , 然后用java调用命令的方式(RunTime.exec相关方法) , 使用ffmpeg的功能 。
java怎么写摄像头获取的视频流摄像头获取到java视频抓拍代码的数据其实都是一帧一帧的图片 , 任何语言不仅仅是java都可以对这些数据进行处理,但是Java不是最佳的选择 。
针对这些图片你首先要知道摄像头是否对视频流使用java视频抓拍代码了压缩技术,例如:H263\H264或者是没有压缩过的 。
如果是压缩过的,你需要先对每一帧进行解编码(DECODE),然后就是一张图了,你进行你要做的编辑 , 然后再编码(ENCODE),再放入视频流中 。
C语言开发的视频处理软件是cstream , 你可以看一看 , 这个是通道式处理,添加插件,处理每一个buffer , 一个buffer就是一帧,同时也可以处理多种格式的音频 。
对视频的编辑不是简简单单就能实现的,需要对算法有很好的了解 。
新手学习使用Java,尝试着做一个项目使用Java做一个视频图像的处理 。Java图像处理技巧四则
下面代码中用到的sourceImage是一个已经存在的Image对象
图像剪切
对于一个已经存在的Image对象 , 要得到它的一个局部图像,可以使用下面的步骤:
//import java.awt.*;
//import java.awt.image.*;
Image croppedImage;
ImageFilter cropFilter;
CropFilter =new CropImageFilter(25,30,75,75); //四个参数分别为图像起点坐标和宽高,即CropImageFilter(int x,int y,int width,int height),详细情况请参考API
CroppedImage= Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(sourceImage.getSource(),cropFilter));
如果是在Component的子类中使用,可以将上面的Toolkit.getDefaultToolkit().去掉 。FilteredImageSource是一个ImageProducer对象 。
图像缩放
对于一个已经存在的Image对象 , 得到它的一个缩放的Image对象可以使用Image的getScaledInstance方法:
Image scaledImage=sourceImage. getScaledInstance(100,100, Image.SCALE_DEFAULT); //得到一个100X100的图像
Image doubledImage=sourceImage. getScaledInstance(sourceImage.getWidth(this)*2,sourceImage.getHeight(this)*2, Image.SCALE_DEFAULT); //得到一个放大两倍的图像,这个程序一般在一个swing的组件中使用,而类Jcomponent实现了图像观察者接口ImageObserver,所有可以使用this 。
//其它情况请参考API
灰度变换
下面的程序使用三种方法对一个彩色图像进行灰度变换,变换的效果都不一样 。一般而言 , 灰度变换的算法是将象素的三个颜色分量使用R*0.3 G*0.59+ B*0.11得到灰度值 , 然后将之赋值给红绿蓝,这样颜色取得的效果就是灰度的 。另一种就是取红绿蓝三色中的最大值作为灰度值 。java核心包也有一种算法,但是没有看源代码,不知道具体算法是什么样的,效果和上述不同 。
/* GrayFilter.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class GrayFilter extends RGBImageFilter {
int modelStyle;
public GrayFilter() {
modelStyle=GrayModel.CS_MAX;
canFilterIndexColorModel=true;
}
public GrayFilter(int style) {
modelStyle=style;
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
if (modelStyle==GrayModel
else if (modelStyle==GrayModel
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
/* GrayModel.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class GrayModel extends ColorModel {
public static final int CS_MAX=0;
public static final int CS_FLOAT=1;
ColorModel sourceModel;
int modelStyle;
public GrayModel(ColorModel sourceModel) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=0;
}
public GrayModel(ColorModel sourceModel,int style) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
modelStyle=style;
}
public void setGrayStyle(int style) {
modelStyle=style;
}
protected int getGrayLevel(int pixel) {
if (modelStyle==CS_MAX) {
return Math.max(sourceModel.getRed(pixel),Math.max(sourceModel.getGreen(pixel),sourceModel.getBlue(pixel)));
}
else if (modelStyle==CS_FLOAT){
return (int)(sourceModel.getRed(pixel)*0.3 sourceModel.getGreen(pixel)*0.59 sourceModel.getBlue(pixel)*0.11);
}
else {
return 0;
}
}
public int getAlpha(int pixel) {
return sourceModel.getAlpha(pixel);
}
public int getRed(int pixel) {
return getGrayLevel(pixel);
}
public int getGreen(int pixel) {
return getGrayLevel(pixel);
}
public int getBlue(int pixel) {
return getGrayLevel(pixel);
}
public int getRGB(int pixel) {
int gray=getGrayLevel(pixel);
return (getAlpha(pixel)24) (gray16) (gray8) gray;
}
}
如果你有自己的算法或者想取得特殊的效果,你可以修改类GrayModel的方法getGrayLevel() 。
色彩变换
根据上面的原理,我们也可以实现色彩变换,这样的效果就很多了 。下面是一个反转变换的例子:
/* ReverseColorModel.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class ReverseColorModel extends ColorModel {
ColorModel sourceModel;
public ReverseColorModel(ColorModel sourceModel) {
super(sourceModel.getPixelSize());
this.sourceModel=sourceModel;
}
public int getAlpha(int pixel) {
return sourceModel.getAlpha(pixel);
}
public int getRed(int pixel) {
return ~sourceModel.getRed(pixel);
}
public int getGreen(int pixel) {
return ~sourceModel.getGreen(pixel);
}
public int getBlue(int pixel) {
return ~sourceModel.getBlue(pixel);
}
public int getRGB(int pixel) {
return (getAlpha(pixel)24) (getRed(pixel)16) (getGreen(pixel)8) getBlue(pixel);
}
}
/* ReverseColorModel.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.image.*;
public class ReverseFilter extends RGBImageFilter {
public ReverseFilter() {
canFilterIndexColorModel=true;
}
public void setColorModel(ColorModel cm) {
substituteColorModel(cm,new ReverseColorModel(cm));
}
public int filterRGB(int x,int y,int pixel) {
return pixel;
}
}
要想取得自己的效果 , 需要修改ReverseColorModel.java中的三个方法,getRed、getGreen、getBlue 。
下面是上面的效果的一个总的演示程序 。
/*GrayImage.java*/
/*@author:cherami */
/*email:cherami@163.net*/
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.color.*;
public class GrayImage extends JFrame{
Image source,gray,gray3,clip,bigimg;
BufferedImage bimg,gray2;
GrayFilter filter,filter2;
ImageIcon ii;
ImageFilter cropFilter;
int iw,ih;
public GrayImage() {
ii=new ImageIcon(\"images/11.gif\");
source=ii.getImage();
iw=source.getWidth(this);
ih=source.getHeight(this);
filter=new GrayFilter();
filter2=new GrayFilter(GrayModel.CS_FLOAT);
gray=createImage(new FilteredImageSource(source.getSource(),filter));
gray3=createImage(new FilteredImageSource(source.getSource(),filter2));
cropFilter=new CropImageFilter(5,5,iw-5,ih-5);
clip=createImage(new FilteredImageSource(source.getSource(),cropFilter));
bigimg=source.getScaledInstance(iw*2,ih*2,Image.SCALE_DEFAULT);
MediaTracker mt=new MediaTracker(this);
mt.addImage(gray,0);
【java视频抓拍代码 java做视频监控】try {
mt.waitForAll();
} catch (Exception e) {
}
java如何采集USB摄像头拍摄的视频,并在web上显示出来java编写的 能处理 视频的代码不是一般人能看懂的……你可以找一下其他的软件嘛……
如何用Java编写代码读取视频文件视频也是一个文件,就用file类就可以了,这里简单帮你实现一下吧:
---------------------------
//向该方法传递视频文件的路径
public static void getVideo(String filePath){
//得到一个File 对象
File fileImg=FraudinfoAction.getFraudImg(path);
//渲染一个二进制字节码文件
renderBinary(fileImg);
}
java录视频如何实现1、每次开始录制时会调用一遍init方法java视频抓拍代码,在指定目录位置形成一个没有任何大小java视频抓拍代码的mp4文件 。
2、之后在start方法里面会开一个线程不断的去截取当前的屏幕 。
3、最后调用stop方法关闭线程的同时生成最终的录屏文件即可 。
关于java视频抓拍代码和java做视频监控的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读