javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
前言:
一、实现的功能
二、实现代码
1、无水印,无帧率计算实现:
做好自己!--eguid
VideoCapture vc=null;
//遍历查找摄像头
int index=-1;
for(;index<2;index++){
vc=new opencv_videoio.VideoCapture(index);
if(vc.grab()){
//找到摄像头设备,退出遍历
System.err.println("当前摄像头:"+index);
break;
}
vc.close();//没找到设备,释放资源
}
//vc为null,并且设备没正常开启,说明没找到设备
if(vc!=null&&!vc.isOpened()){
System.err.println("无法找到摄像头,请检查是否存在摄像头设备");
return;
}
//使用java的JFrame显示图像
CanvasFrame cFrame = new CanvasFrame("做好自己!--eguid!http://www.eguid.cc/",CanvasFrame.getDefaultGamma()/2.2);
//javacv提供的转换器,方便mat转换为Frame
OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
Mat mat=new Mat();
for(;;){
vc.retrieve(mat);//重新获取mat
if(vc.grab()){//是否采集到摄像头数据
if(vc.read(mat)){//读取一帧mat图像
// opencv_highgui.imshow("eguid", mat);该opencv方法windows下会无响应
cFrame.showImage(converter.convert(mat));
}
mat.release();//释放mat
} try {
Thread.sleep(45);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
2、实时计算帧率并加实时帧率文字水印到图像
//做好自己!--eguid!http://www.eguid.cc
String msg="fps:";//水印文字
// 水印文字位置
Point point = new Point(10, 50);
// 颜色,使用黄色
Scalar scalar = new Scalar(0, 255, 255, 0);
DecimalFormat df=new DecimalFormat(".##");//数字格式化
VideoCapture vc=null;
//遍历查找摄像头
int index=-1;
for(;index<2;index++){
vc=new opencv_videoio.VideoCapture(index);
if(vc.grab()){
//找到摄像头设备,退出遍历
System.err.println("做好自己!--eguid温馨提示,获取本机当前摄像头序号:"+index);
break;
}
vc.close();//没找到设备,释放资源
}
//vc为null,并且设备没正常开启,说明没找到设备
if(vc!=null&&!vc.isOpened()){
System.err.println("无法找到摄像头,请检查是否存在摄像头设备");
return;
}
//使用java的JFrame显示图像
CanvasFrame cFrame = new CanvasFrame("做好自己!--eguid!http://www.eguid.cc",CanvasFrame.getDefaultGamma()/2.2);
//javacv提供的转换器,方便mat转换为Frame
OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
Mat mat=new Mat();
double start=System.currentTimeMillis();
double end;
for(int i=0;;i++){
vc.retrieve(mat);//重新获取mat
if(vc.grab()){//是否采集到摄像头数据
if(vc.read(mat)){//读取一帧mat图像
end=System.currentTimeMillis();
if(mat!=null){
opencv_imgproc.putText(mat,msg+df.format((1000.0/(end-start))), point, opencv_imgproc.CV_FONT_VECTOR0, 1.2, scalar, 1, 20, false);
}
// opencv_highgui.imshow("eguid", mat);该opencv方法windows下会无响应
cFrame.showImage(converter.convert(mat));
System.err.println(i);
start=end;
}
mat.release();//释放mat
}
}
javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)的更多相关文章
- opencv图像处理基础 (《OpenCV编程入门--毛星云》学习笔记一---五章)
#include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...
- (7拾遗)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...
- OpenCV图像处理篇之边缘检测算子
OpenCV图像处理篇之边缘检测算子 转载: http://xiahouzuoxin.github.io/notes/ 3种边缘检测算子 一阶导数的梯度算子 高斯拉普拉斯算子 Canny算子 Open ...
- (2环境架设)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...
- (5编译使用最新opencv)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html 2环境架设http://www.c ...
- 实用图像处理入门 - 1 - opencv VS2012 环境搭建
标签中的部分 font-family: 华文细黑; font-size: 26px; font-weight: bold; color: #611427; margin-top:40px; } h2 ...
- 《OpenCV图像处理编程实例》
<OpenCV图像处理编程实例>例程复现 随书代码下载:http://www.broadview.com.cn/28573 总结+遇到的issue解决: 第一章 初识OpenCV 1.VS ...
- 基于Opencv图像处理的时时头像採集试验
2014 4.20 近期想做一个关于图像处理的软件玩玩,可惜也没有什么特别的想法,就当玩玩好了,准备用Opencv开源库实现下简单的功能吧. Opencv是一个专业的图像处理库,里面有非常多基础函数能 ...
- Python+OpenCV图像处理(一)
Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...
随机推荐
- HDU3518 后缀数组求不可重叠重复出现的不同子串个数
枚举子串长度,根据height分组,如果本组sa最小值与sa最大值之差超过枚举的长度,则本组对于答案贡献为1. #include <iostream> #include <vecto ...
- java异常处理机制(try-catch-finally)
/* * 异常处理机制 * 1.分类:Error和Exception * Error错误是JVM自动报错的,程序员无法解决例如开数组过大int a[]=new int [1024*1024*1024] ...
- angular 实现自定义样式下拉菜单
自己闲着没事写了一个自定义的下拉菜单希望和大家交流一下!望能和大神们成为朋友. 下面上代码: <!doctype html> <html lang="en" ng ...
- 用Web抓包分析工具Livepool 实现本地替换开发
这是官方的介绍: LivePool 是一个基于 NodeJS,类似 Fiddler 支持抓包和本地替换的 Web 开发调试工具,是 Tencent AlloyTeam 在开发实践过程总结出的一套的便捷 ...
- 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 C - Monkey and Banana
https://vjudge.net/contest/68966#problem/C [参考]http://blog.csdn.net/qinmusiyan/article/details/79862 ...
- 玩玩kafka1 单机安装
今天主要来一遍kafka单机版的安装,比较简单易上手,关于kafka的介绍我就不贴了,大家可以自行搜索 1.首先将tgz包传到centos目录下(这里使用xftp工具) ok后查看一下tgz包是否已经 ...
- C++ 元编程 —— 让编译器帮你写程序
目录 1 C++ 中的元编程 1.1 什么是元编程 1.2 元编程在 C++ 中的位置 1.3 C++ 元编程的历史 2 元编程的语言支持 2.1 C++ 中的模板类型 2.2 C++ 中的模板参数 ...
- dp
1. 将原问题分解为子问题 2. 确定状态 3. 确定一些初始状态(边界状态)的值 4. 确定状态转移方程 1) 问题具有最优子结构性质.如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具 ...
- SQL语法考核
--继上一篇MySQL的开发总结之后,适当的练习还是很有必要的-- SQL语法多变,不敢保证唯一,也不敢保证全对,如果错误欢迎指出,即刻修改. 一.现有表结构如下图 TABLENAME:afinfo ...
- Git版本控制,rsync同步文件,完成线上部署
之前项目开发完成,测试阶段,借着此时,由于公司暂时用两台aliyun ecs 做业务层,所以每次都需要同步线上文件,进而想着搞一搞服务器端(小公司,新项目,先小搞一把),搭建一套小的版本控制上线的 ...