直接上代码
Loader.load(opencv_objdetect.class);
long startTime=0;//ffmpag 通过摄像头IP同地址获得视频流 获取 摄像头流媒体
FrameGrabber grabber =FFmpegFrameGrabber.createDefault(inputFile);
grabber.setOption("rtsp_transport", "tcp"); // 使用tcp的方式,不然会丢包很严重
grabber.setImageWidth(1280);
grabber.setImageHeight(720);
try {
//启动ffmpeg
grabber.start();
} catch (Exception e) {
try {
//重新启动
grabber.restart();
} catch (Exception e1) {
throw e1;
}
}
//转换器
OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
//从视频流中获得值指贴图片
Frame grabframe =grabber.grab();
//抓取一帧视频并将其转换为图像,至于用这个图像用来做什么?加水印,人脸识别等等自行添加
IplImage grabbedImage =null;
if(grabframe != null){
System.out.println("获得第一帧");
grabbedImage = converter.convert(grabframe);
System.out.println(grabbedImage);
//保存图片到本地
opencv_imgcodecs.cvSaveImage("F:\\hello12.jpg",grabbedImage);
// 将IplImage转为Frame
Frame convertFrame2 = converter.convert(grabbedImage);
//将图片指针转为二进制byte[] start
Java2DFrameConverter java2dFrameConverter = new Java2DFrameConverter();
BufferedImage bufferedImage= java2dFrameConverter.convert(convertFrame2);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "jpg", out);
byte[] readFile = out.toByteArray();
//将图片指针转为二进制byte[] end
// byte[] readFile = FileUtils.readFileToByteArray(new File("F:\\hello112.jpg")); //读取本地图片
//发送图片到图片服务器
Client client = new Client();
WebResource resource = client.resource("http://localhost:8088/imgWeb/upload/hello112.jpg");
resource.put(String.class, readFile);
//图片资源释放释放资源
grabbedImage.release();