技术标签: opencv3 java OpenCV3_Java_实战示例
启动摄像头 VideoCapture Videoio
package opencv_java_demo;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.*;
import java.awt.image.BufferedImage;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.Videoio;
public class CaptureBasic extends JPanel {
private static final long serialVersionUID=1L;
private BufferedImage mImg;
private BufferedImage mat2BI(Mat mat){
int dataSize =mat.cols()*mat.rows()*(int)mat.elemSize();
byte[] data=new byte[dataSize];
mat.get(0, 0,data);
int type=mat.channels()==1?
BufferedImage.TYPE_BYTE_GRAY:BufferedImage.TYPE_3BYTE_BGR;
if(type==BufferedImage.TYPE_3BYTE_BGR){
for(int i=0;i<dataSize;i+=3){
byte blue=data[i+0];
data[i+0]=data[i+2];
data[i+2]=blue;
}
}
BufferedImage image=new BufferedImage(mat.cols(),mat.rows(),type);
image.getRaster().setDataElements(0, 0, mat.cols(), mat.rows(), data);
return image;
}
public void paintComponent(Graphics g){
if(mImg!=null){
g.drawImage(mImg, 0, 0, mImg.getWidth(),mImg.getHeight(),this);
}
}
public static void main(String[] args) {
try{
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat capImg=new Mat();
VideoCapture capture=new VideoCapture(0);
int height = (int)capture.get(Videoio.CAP_PROP_FRAME_HEIGHT);
int width = (int)capture.get(Videoio.CAP_PROP_FRAME_WIDTH);
if(height==0||width==0){
throw new Exception("camera not found!");
}
JFrame frame=new JFrame("camera");
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
CaptureBasic panel=new CaptureBasic();
frame.setContentPane(panel);
frame.setVisible(true);
frame.setSize(width+frame.getInsets().left+frame.getInsets().right,
height+frame.getInsets().top+frame.getInsets().bottom);
while(frame.isShowing()){
capture.read(capImg);
panel.mImg=panel.mat2BI(capImg);
panel.repaint();
}
capture.release();
frame.dispose();
}catch(Exception e){
System.out.println("例外:" + e);
}finally{
System.out.println("--done--");
}
}
}
// 图片转化成base64字符串 public static byte[] GetImageStr() { String imgFile = "E://soft//1.jpg"; InputStream in = null; byte[] data = null; try { in = new FileInputStream(imgFile); dat_java 图片base64 占多少个字符
第4章建模的StarUML本章详细介绍了程序创建图元素和编辑。 包括使用模型浏览器来组织模型结构。编辑元素和图组织模型结构编辑元素和图创建新图的StarUML支持11 UML图表类型。 用户可以自由地创建,并根据需要管理不同的图表。程序创建新图:从模型资源管理器或图区选择元素包含新图。右键单击并选择[添加图表]菜单。 在做出选择的图表类型的新图将被创建。_staruml怎么缩放
1.插件下载:http://sourceforge.net/projects/npp-plugins/手动安装 1. 打开notepad++插件项目的官方网站:http://sourceforge.net/projects/npp-plugins/ 在列表中点击需要的插件File列表(或在顶部搜索框搜索你想要的插件),以Autosave为例。 ...
单片机采集电压信号(AD转换的应用实例)上上一篇文章我们讲了如何把一个信号的峰值采集,今天我们来讲如何把它连入单片机上,这里我们采用的是Multisim仿真。我们都知道单片机采集的信号都是高电平和低电平,模拟量他是无法采集到的,他所能采取的知识数字量,所以我们应该吧采集到的模拟信号转换成数字信号,而这个桥梁就是AD转换器,先讲一下AD转换器的额原理的吧,下图是AD转换器的内部结构图:这只是..._单片机采集电压信号
引言:周三和周四两天,Facebook的F8开发者大会如火如荼地召开着,其中有多项新产品和新功能宣布。这些产品和功能为什么对Facebook这个社交巨头如此重要呢,下面将为读者进行详细地解答。在今年的F8开发者大会上,Facebook宣布了一大堆新的产品和功能,从Messenger聊天平台到VR产品均有涉及。尽管“聊天机器人”,还有利用无人机来直播视频很有些噱头的感觉,但Facebook确..._聊天机器人提供合成的虚拟朋友
GJK算法最初用来求三维空间中凸多面体的距离(即最近距离),也因此经常用来做碰撞检测(距离是否为0)。后被推广到n维空间中求凸包之间的距离,此处用来求二维平面上2个凸多边形的距离。 GJK算法首先要解决计算Minkowski和的问题。所谓Minkowski和,指A、B两个集合,令A+B={x+y,其中x属于A,y属于B}即二者的Minkowski和。类似的可以定义负集与Minkow..._gjk 计算凸多边形的距离
1) 必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。2) 必须遵循块顺序:若代码同时使用 catch 和 finally 块,则必须将 catch 块放在 try 块之后。3) catch 块与相应的异常类的类型相关。4) 一个 try 块可能有多个 catch 块。若如此,则执行第一个匹...
提及电路保护器件,脑海里自然而然出现的是:ESD二极管、TVS瞬态抑制二极管、压敏电阻、自恢复保险丝、陶瓷气体放电管等等。接下来重点要分享的是有关ESD二极管的话题。关于ESD二极管,您知道多少呢?ESD二极管如何选型?ESD二极管有哪些封装呢?ESD二极管工作原理当系统没有异常干扰时,正常工作时,ESD静电保护二极管可以忽略不计,不起任何作用。但是当外部接口电压超过ESD二极管的击穿电压时,ESD二极管开始起作用,并将电流分流到地。ESD有三种模型,分别是人体模型(HBM)ESD(为了芯_esd二极管
一 基础概念这里主要介绍用Maya C++ API进行插件开发的一些基本概念。1 对象类型Maya API包含了四种类型的对象:Wrappers,Objects,Function Sets以及Proxies,这四种对象构成了Maya API所有内容。 WrappersWrapper是API提供的一个基础性的类,它包含了一些基础数据类,实用的工_mpxcommand
下载ES5.6.1: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.1.tar.gz解压到当前文件夹: tar -xzvf elasticsearch-5.6.1.tar.gz修改sysctl文件:sudo vim /etc/sysctl.conf ,增加下面配置项:注意在每台机...
前言:centos7,没有另外手动安装过jdk。检查java -version发现自带了jdk。但运行javac命令报错:bash:javac:command not found/问题分析:自带的jdk默认只安装了运行环境(找到jdk的安装目录下,发现只有jre文件夹,没有bin、lib等文件夹)。自查方法:(1)先找到jdk的安装目录[root@localhost home]# whi..._-bash: javac: command not found
github:https://github.com/NeoAxis/NeoAxisEngine官方网站:https://www.neoaxis.com/Main featuresRoyalty-free, open source platform. Modern architecture and design of the editor. Built-in C# and visual scripting. Complete set of tools. .NET API..NE..._neoaxis engine