对于使用OpenCV在哪里可以学习/找到从Kinect流式传输的手势识别示例?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解基于opencv的手势识别,并且为您提供关于android使用g
对于使用OpenCV在哪里可以学习/找到从Kinect流式传输的手势识别示例?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解基于opencv的手势识别,并且为您提供关于android使用gesturedetector手势识别示例分享、android创建手势识别示例代码、android开发之为activity增加左右手势识别示例、c – 如何使用OpenCV在COD中搜索玩家模型的宝贵知识。
本文目录一览:- 使用OpenCV在哪里可以学习/找到从Kinect流式传输的手势识别示例?(基于opencv的手势识别)
- android使用gesturedetector手势识别示例分享
- android创建手势识别示例代码
- android开发之为activity增加左右手势识别示例
- c – 如何使用OpenCV在COD中搜索玩家模型
使用OpenCV在哪里可以学习/找到从Kinect流式传输的手势识别示例?(基于opencv的手势识别)
我有Kinect和Windows和MacOSX的驱动程序。是否有使用OpenCV API从Kinect流式传输手势识别的示例?我正在尝试在Xbox
Kinect上实现类似于DaVinci的原型,但在Windows和MacOSX中。
答案1
小编典典我认为它不会这么简单,主要是因为kinect的深度图像数据不是那么敏感。因此,在1m至1.5m的距离之后,所有手指将合并,因此您将无法获得清晰的轮廓来检测手指
android使用gesturedetector手势识别示例分享
public class MyGestureLintener extends SimpleOnGestureListener {
private Context context;
public MyGestureLintener(Context context) {
super();
this.context = context;
}
// 单击,触摸屏按下时立刻触发
/*@Override
public boolean onDown(MotionEvent e) {
// Todo Auto-generated method stub
Toast.makeText(context,"Down " + e.getAction(),Toast.LENGTH_SHORT)
.show();
return true;
}*/
// 双击,手指在触摸屏上迅速点击第二下时触发
@Override
public boolean onDoubleTap(MotionEvent e) {
// Todo Auto-generated method stub
return super.onDoubleTap(e);
}
// 双击的按下跟抬起各触发一次
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// Todo Auto-generated method stub
return super.onDoubleTapEvent(e);
}
// 滑动,触摸屏按下后快速移动并抬起,会先触发滚动手势,跟着触发一个滑动手势
@Override
public boolean onFling(MotionEvent e1,MotionEvent e2,float veLocityX,
float veLocityY) {
// Todo Auto-generated method stub
return super.onFling(e1,e2,veLocityX,veLocityY);
}
// 长按,触摸屏按下后既不抬起也不移动,过一段时间后触发
@Override
public void onLongPress(MotionEvent e) {
// Todo Auto-generated method stub
Toast.makeText(context,"LONG " + e.getAction(),Toast.LENGTH_SHORT)
.show();
}
// 滚动,触摸屏按下后移动
@Override
public boolean onScroll(MotionEvent e1,float distanceX,
float distanceY) {
Toast.makeText(context,"onScroll " + e2.getAction(),Toast.LENGTH_SHORT)
.show();
return true;
}
// 短按,触摸屏按下后片刻后抬起,会触发这个手势,如果迅速抬起则不会
@Override
public void onShowPress(MotionEvent e) {
// Todo Auto-generated method stub
Toast.makeText(context,"Show " + e.getAction(),Toast.LENGTH_SHORT)
.show();
}
// 单击确认,即很快的按下并抬起,但并不连续点击第二下
/*@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// Todo Auto-generated method stub
Toast.makeText(context,"onSingleTapConfirmed " + e.getAction(),Toast.LENGTH_SHORT)
.show();
return true;
}*/
// 抬起,手指离开触摸屏时触发(长按、滚动、滑动时,不会触发这个手势)
/*@Override
public boolean onSingleTapUp(MotionEvent e) {
// Todo Auto-generated method stub
Toast.makeText(context,"onSingleTapUp " + e.getAction(),Toast.LENGTH_SHORT)
.show();
return true;
}*/
public class MainActivity extends Activity {
private GestureDetector mGestureDetector;//手势对象
private MyGestureLintener myGestureLintener;//手势监听的接口对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myGestureLintener = new MyGestureLintener(this);
//手势对象的构造方法
mGestureDetector = new GestureDetector(this,
myGestureLintener);
}
/**GestureDetector类的onTouchEvent方法用来辨别不同的手势*/
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean b = false;
int i = event.getAction();
int j = MotionEvent.ACTION_MOVE;
System.out.println(i+"<----------------->"+j);
b = mGestureDetector.onTouchEvent(event);
if (b) {
Intent in = new Intent();
in.setClass(this,testActivity.class);
startActivity(in);
}
return b;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
}
android创建手势识别示例代码
这篇的内容使用到的是android.gesture包,具体的例子参考的是Sample中GestureBuilder程序。
1、手势创建
手势创建主要用到GestureOverlayView和GestureLibrary。GestureOverlayView的父类为android.widget.FrameLayout,是手势绘图区。GestureLibrary类主要对手势进行保存、删除等操作的,存放手势的仓库。下面给出创建手势的例子,如下图,可以定义如图手势打开csdn.net
1.1、创建绘图区
GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gestures_overlay);
overlay.setGesturestrokeType(GestureOverlayView.GESTURE_stroke_TYPE_MULTIPLE);
overlay.setFadeOffset(2000); //多笔画每两次的间隔时间
overlay.setGestureColor(Color.CYAN);//画笔颜色
overlay.setGesturestrokeWidth(6);//画笔粗细值
overlay.addOnGestureListener(new GesturesProcessor());