<代码级=" java的">进口android.hardware.usb.UsbDeviceConnection; // ...私人UsbDeviceConnection连接; // ... Connection.controlTransfer(0X40,指挥,价值,渠道,NULL,0,5000); &中尉; /码> PRE>
该控制器允许你控制伺服驱动器,设置目标位置,速度和加速度 - 所有你需要的平稳移动。该参数的命令可以采取以下三个值之一:
<代码级=" java的">公共静态最终诠释USB_SET_POSITION = 0x85未;公共静态最终诠释USB_SET_SPEED = 87H的;公共静态最终诠释USB_SET_ACCELERATION = 0x89上; &中尉; /码> PRE>选择适当的值,并将其传递到所需的伺服电机,使用参数通道。链接到完整的源代码和配置USB访问的应用程序清单,看帖子的末尾。
<代码级=" java的"> ...从相机导入org.opencv.Android.CameraBridgeViewBase //捕捉图像; //加载OpenCV的天然依赖关系导入org.opencv.Android.OpenCVLoader; ...公共无效onResume(){super.onResume(); // OpenCV的加载特定的回调//非一般的代码的OpenCV OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6,这一点,mLoaderCallback); } ... //一旦OpenCV的经理建立联系,//我们可以加载动态库的System.loadLibrary(QUOT; jni_part"); ...&中尉; /码> PRE>代码C ++
<代码级=" CPP"> ... //典型的JNI:Java类方法名//指向RGB图像作为参数JNIEXPORT INT JNICALL Java_com_example_circles_MainActivity_process(的JNIEnv * jenv,jobject OBJ,jlong addrGray,jlong addrRgba )... //从指针垫和放大器的位图; mRgb = *(马太福音*)addrRgba; //模糊,在检测圈medianBlur(经理,经理,5)要求; // OpenCV的检测 - Hough变换HoughCircles(MGR,//灰度输入图像*圈,//输出向量CV_HOUGH_GRADIENT,//检测方法使用4,//累加器分辨率成反比的图像mGr.rows / 8中心之间//最小距离检测圈220,//这两个实习生通过Canny边缘检测器200的门槛较高,// 20 100蓄能器的阈值,//最小半径mGr.cols / 8 //最大半径); &中尉; /码> PRE>
为了测试,我感动的纸张在智能手机正面配有一块印圆。我们假定20厘米图像圈的距离将有300个像素的大小 - 我们假设这是正确的位置。如果圆圈较小的智能手机必须拉得更近,如果更多的 - 然后再打开。这是最简单的选择。您可以使用两个同心圆,价格十分导航长距离,少 - 在中间。没有什么可以阻止其他识别特定的形状,如箭头。最终我们需要得到一个系统,该系统使用的数据的GPS,和从照相机中的颜色信息。