【OpenCV学习】HandVu API分析

简介: 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ HandVu是UCSB的Mathias Kolsch, matz@cs.ucsb.edu所写的一个开源计算机视觉库,它以C++为基本实现语言,以OpenCV为图像处理和部分算法实现的基础,并以C语言的形式将接口呈现了出来以方便Linux C程序员。

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

HandVu是UCSB的Mathias Kolsch, matz@cs.ucsb.edu所写的一个开源计算机视觉库,它以C++为基本实现语言,以OpenCV为图像处理和部分算法实现的基础,并以C语言的形式将接口呈现了出来以方便Linux C程序员。一下是对这个接口的注释型分析:
typedef struct _hvState {
  int        obj_id;//fixed to a value of zero,indentify the right hand.
  /* whether the object is successfully tracked and whether one of the key postures was recognized */
  bool       tracked;
  bool       recognized;
  /* The location of the tracked object is reported in relative image coordinates,the image origin is in the left upper corner of the image */
  double     center_xpos, center_ypos;//The location of the result of tracking
  double     scale;
  string     posture;//posture that is recognized
  RefTime    tstamp;//time stamp
} hvState;
/*finite state machines  */
enum hvAction {         // specify recommendations to application:
  HV_INVALID_ACTION = 0,// Invalid Action
  HV_PROCESS_FRAME = 1, // fully process and display the frame
  HV_SKIP_FRAME = 2,    // display but do not further process
  HV_DROP_FRAME = 3     // do not display the frame
};
/*Initialize or Uninitialize the interface  */
void hvInitialize(int width, int height);
void hvUninitialize();
/* Load the config file or judge whether or not it is loaded correctly*/
void hvLoadConductor(const string& filename);
bool hvConductorLoaded();
/* start or stop recongnition,default obj_id is 0 (indicates the right hand) */
void hvStartRecognition(int obj_id=0);
void hvStopRecognition(int obj_id=0);
/* Process the frame,the type IplImage is belong to the OpenCV library */
hvAction hvProcessFrame(IplImage* inOutImage, IplImage* rightImage=NULL);
bool hvIsActive();//Judge whether the hv is active
/* Asynchronize method of processing the frame */
void hvAsyncSetup(int num_buffers, void (*cb)(IplImage* img, hvAction action));
void hvAsyncGetImageBuffer(IplImage** pImage, int* pBufferID);
void hvAsyncProcessFrame(int bufferID);
/* Get the State of the hand which is being tracked */
void hvGetState(int obj_id, hvState& state);
/* set the area of the hand being detected */
void hvSetDetectionArea(int left, int top, int right, int bottom);
/* Get the area of the hand being detected */
void hvGetDetectionArea(int* pLeft, int* pTop, int* pRight, int* pBottom);
/* recompute the latency of normal */
void hvRecomputeNormalLatency();
/* Set or Get the amount and verbosity of the overlay */
/* Please refer to the page 90 of the paper  */
void hvSetOverlayLevel(int level);
int hvGetOverlayLevel();
/* some operation on correcting the distortion of camrea .
* This operation takes a considerable amount of time */
void hvCorrectDistortion(bool enable=true);
bool hvIsCorrectingDistortion();
bool hvCanCorrectDistortion();
/* some operation on adjusting the exposure of camrea .
For the exposure adjustment to be possible(turned on via SetAdjustExposure),
HandVu must have been initialized with the CameraController!=NULL.*/
void hvSetAdjustExposure(bool enable=true);
bool hvCanAdjustExposure();
bool hvIsAdjustingExposure();
/* Set the log file */
void hvSetLogfile(const string& filename);
/* Save the related picture  */
void hvSaveScannedArea(IplImage* pImg, string& picfile);
void hvSaveImageArea(IplImage* pImg, int left, int top, int right, int bottom, string& picfile);
void hvSetSaveFilenameRoot(const string& fname_root);
void hvSetDoTrack(bool do_track);
/* Set or Start the Open Sound Control (OSC) Server or Gesture Server defined by the author */
/* For Open Sound Control (OSC), Please refer to the page 93 of the paper */
/* For the Gesture Server, Please erfer to the page 94 of the paper */
void hvStartGestureServer(int port, int max_num_clients=10);
void hvStartOSCServer(const string& desthost, int destport);
void hvStopGestureServer(int port);
void hvStopOSCServer(const string& desthost, int destport);
/** verbosity: 0 minimal, 3 maximal
*/
void hvGetVersion(string& version, int verbosity);

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/


               作者:gnuhpc
               出处:http://www.cnblogs.com/gnuhpc/
               除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。


分享到:

目录
相关文章
|
1天前
|
存储 数据可视化 API
1688商品详情数据接口:如何通过1688 API实现批量商品数据抓取和分析
使用1688 API进行批量商品数据抓取和分析,首先需注册账号创建应用获取App Key和Secret Key。研究API文档,构建请求URL,如商品详情、搜索、销售量等接口。利用编程语言发送HTTP请求,实时抓取并处理数据,存储到数据库。实施优化策略,处理错误,记录日志。数据可视化展示并确保API安全性。编写文档并持续更新以适应API变化。参考[c0b.cc/R4rbK2]获取API测试和SDK。
12 3
|
2天前
|
监控 安全 数据挖掘
Email 接口API有哪些?具体分析一下阿里云和AOK的优点
本文介绍了常见的Email接口API,如阿里云邮件推送、AOKSend、SendGrid、Mailgun和Amazon SES。阿里云API以其高稳定性和数据分析功能脱颖而出,支持批量发送和多语言;而AOKSend API以易于集成、高安全性和优秀客户支持为亮点。企业在选择时应考虑自身需求和预算,以优化邮件营销效果。
|
3天前
|
JSON 安全 API
解锁淘宝商品评论API接口:电商数据分析的新视角
淘宝商品评论API接口是淘宝开放平台提供的一组API接口,允许开发者通过编程方式获取淘宝商品评论数据。这些接口可以获取到商品的详细信息、用户评论、评分等数据,为电商数据分析提供了丰富的素材。
|
5天前
|
存储 安全 机器人
【LLM】智能学生顾问构建技术学习(Lyrz SDK + OpenAI API )
【5月更文挑战第13天】智能学生顾问构建技术学习(Lyrz SDK + OpenAI API )
16 1
|
5天前
|
Kubernetes 安全 API
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
|
5天前
|
JSON 搜索推荐 数据挖掘
电商数据分析的利器:电商关键词搜索API接口(标题丨图片丨价格丨链接)
淘宝关键词搜索接口为电商领域的数据分析提供了丰富的数据源。通过有效利用这一接口,企业和研究人员可以更深入地洞察市场动态,优化营销策略,并提升用户体验。随着电商平台技术的不断进步,未来的API将更加智能和个性化,为电商行业带来更多的可能性。
|
5天前
|
存储 Java API
使用Stream API进行数据处理和分析
【4月更文挑战第18天】Java 8的Stream API为高效声明式处理集合数据提供了革命性功能。Stream非存储、不重复、有顺序且只能消费一次。创建Stream可通过集合、`Stream.of()`、`Stream.generate()`和`Stream.iterate()`。中间操作如`filter()`、`map()`和`sorted()`不改变原流,而终端操作如`forEach()`、`toArray()`和`collect()`结束流并产生结果。
|
5天前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
|
5天前
|
算法 计算机视觉 C++
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测
|
5天前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Canny边缘检测算法
Opencv(C++)学习系列---Canny边缘检测算法