全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 机器人 >

基于Dragonboard 410c android系统实现人的眼球识别功

时间:2017-02-17 10:39

人气:

作者:admin

标签: 眼球识  Android 

导读:基于Dragonboard 410c android系统实现人的眼球识别功能-上一篇博客《基于Dragonboard410c android系统实现USB camera图像预览》,我们实现了如何在410c android系统上进行USB camera图像的预览功能,本文...

上一篇博客《基于Dragonboard410c android系统实现USB camera图像预览》,我们实现了如何在410c android系统上进行USB camera图像的预览功能,本文在此基础上,我们借助openncv库,实现人的眼球识别功能。

一 准备工具:

图1.Dragonboard410c开发板(android系统)

图2.显示器

图3.HDMI线

图4.罗技C525(usb camera)

二 移植opencv库:

1.下载地址:http://opencv.org/downloads.html

2.移植步骤:大家可以参照 Android 使用OpenCV的方法案例,包括如何可以通过省略openncv_manger.apk的方式实现整体移植。

3.搭好环境后,最主要是加入我们上传的例程:Eye_recognition.rar,并编译运行(官网的opencv可不提供这个功能,笔者可是无私奉献给大家哈)。

三 关键代码:

#include #include #include   #include #include   #include   #define LOG_TAG "FaceDetection/DetectionBasedTracker" #define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__))   using namespace std; using namespace cv;   inline void vector_Rect_to_Mat(vector<Rect>& v_rect, Mat& mat) { mat = Mat(v_rect, true); }   JNIEXPORT jlong JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeCreateObject (JNIEnv * jenv, jclass, jstring jFileName, jint faceSize) { const char* jnamestr = jenv->GetStringUTFChars(jFileName, NULL); string stdFileName(jnamestr); jlong result = 0;     try { DetectionBasedTracker::Parameters DetectorParams; if (faceSize > 0) DetectorParams.minObjectSize = faceSize; result = (jlong)new DetectionBasedTracker(stdFileName, DetectorParams); } catch(cv::Exception e) { LOGD("nativeCreateObject catched cv::Exception: %s", e.what()); jclass je = jenv->FindClass("org/opencv/core/CvException"); if(!je) je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, e.what()); } catch (...) { LOGD("nativeCreateObject catched unknown exception"); jclass je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}"); return 0; }   return result; }   JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeDestroyObject (JNIEnv * jenv, jclass, jlong thiz) { try { ((DetectionBasedTracker*)thiz)->stop(); delete (DetectionBasedTracker*)thiz; } catch(cv::Exception e) { LOGD("nativeestroyObject catched cv::Exception: %s", e.what()); jclass je = jenv->FindClass("org/opencv/core/CvException"); if(!je) je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, e.what()); } catch (...) { LOGD("nativeDestroyObject catched unknown exception"); jclass je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}"); } }   JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStart (JNIEnv * jenv, jclass, jlong thiz) { try { ((DetectionBasedTracker*)thiz)->run(); } catch(cv::Exception e) { LOGD("nativeStart catched cv::Exception: %s", e.what()); jclass je = jenv->FindClass("org/opencv/core/CvException"); if(!je) je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, e.what()); } catch (...) { LOGD("nativeStart catched unknown exception"); jclass je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}"); } }   JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeStop (JNIEnv * jenv, jclass, jlong thiz) { try { ((DetectionBasedTracker*)thiz)->stop(); } catch(cv::Exception e) { LOGD("nativeStop catched cv::Exception: %s", e.what()); jclass je = jenv->FindClass("org/opencv/core/CvException"); if(!je) je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, e.what()); } catch (...) { LOGD("nativeStop catched unknown exception"); jclass je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}"); } }   JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeSetFaceSize (JNIEnv * jenv, jclass, jlong thiz, jint faceSize) { try { if (faceSize > 0) { DetectionBasedTracker::Parameters DetectorParams = ((DetectionBasedTracker*)thiz)->getParameters(); DetectorParams.minObjectSize = faceSize; ((DetectionBasedTracker*)thiz)->setParameters(DetectorParams); }   } catch(cv::Exception e) { LOGD("nativeStop catched cv::Exception: %s", e.what()); jclass je = jenv->FindClass("org/opencv/core/CvException"); if(!je) je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, e.what()); } catch (...) { LOGD("nativeSetFaceSize catched unknown exception"); jclass je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}"); } }   JNIEXPORT void JNICALL Java_org_opencv_samples_fd_DetectionBasedTracker_nativeDetect (JNIEnv * jenv, jclass, jlong thiz, jlong imageGray, jlong faces) { try { vector<Rect> RectFaces; ((DetectionBasedTracker*)thiz)->process(*((Mat*)imageGray)); ((DetectionBasedTracker*)thiz)->getObjects(RectFaces); vector_Rect_to_Mat(RectFaces, *((Mat*)faces)); } catch(cv::Exception e) { LOGD("nativeCreateObject catched cv::Exception: %s", e.what()); jclass je = jenv->FindClass("org/opencv/core/CvException"); if(!je) je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, e.what()); } catch (...) { LOGD("nativeDetect catched unknown exception"); jclass je = jenv->FindClass("java/lang/Exception"); jenv->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1VideoCapture__()}"); } }  

四 例程共享:

下载地址:http://pan.baidu.com/s/1jIGz3dO

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信