Welcome to mynteye_d_android_sdk’s documentation!¶
MYNT® EYE 1200 产品说明¶
产品介绍¶
小觅双目摄像头深度Mobile版是小觅双目摄像头深度系列下全新推出的为安卓手机量身定制的融合红外结构光技术的双目深度相机,可应用于三维感知、三维识别、立体测量等诸多立体视觉相关领域,非常适合进行相关领域应用的二次开发。
产品结构¶

产品规格¶
硬件 | |
---|---|
型号 | Stark |
尺寸 | PCB dimension:58.1x29.5mm |
Total | dimension:75.5x34.5x12.9mm |
帧率 | Up to 30fps |
分辨率 | 2560720;1280480 |
深度分辨率 | 1280720; 640480 |
像素尺寸 | 3.0*3.0μm |
基线 | 40.0mm |
镜头 | Replacable Standard M7 |
视角 | D:66° H:59° V:35° |
焦距 | 3.3mm |
支持IR | YES |
IR可探测距离 | 3m |
色彩模式 | Color |
工作距离 | 0.2-2.8m |
扫描模式 | Rolling Shutter |
最大功耗 | 1.64W@5V DC from USB |
输出数据格式 | YUYV/MJPG |
接口 | Type-C/Micro |
重量 | 44g |
UVC MODE | YES |
产品附件¶
产品附件包含:双目*1、Type-c对Type-c数据线*1、Type-c对Micro usb数据线*1、十字盘头M1.6X5*4、mini十字小螺丝刀*1、贴膜*1
MYNT® EYE 1200 SDK安装¶
支持平台¶
Android 5.x ~ Android 8.x
SDK 下载¶
zip 包解压有:apk, aar, demo, doc
SDK 集成指南¶
- 将SDK的aar文件放入libs目录
- 在build.gradle添加aar的支持
dependencies {
implementation fileTree(include: ['*.aar'], dir: 'libs')
....
}
SDK 更新日志¶
v1.2.5 - 2019-07-01¶
- 添加点云本地保存
- 查看点云文件
- 修复app从后台恢复,相机不显示问题
- 添加帧率显示开关接口
v1.2.4 - 2019-05-27¶
- 修改相机sample
- 添加深度数据保存读取例子
- 修复close相机导致crash问题
- 修复开启相机导致crash问题
v1.2.3 - 2019-04-10¶
- 支持开关自动曝光
- 支持开关自动白平衡
- 支持同步获取深度图 & 彩色图
- FramData添加测距方法
v1.2.2 - 2019-03-28¶
- 插拔设备ANR问题修复
- 添加相机内参获取接口
- SDK稳定性提升
v1.2.1 - 2019-02-26¶
- D-1000 支持IMU数据回调
v1.2.0 - 2019-02-26¶
- 兼容D-1200设备
- 兼容D-1000设备的图像(IMU | IR 功能暂时不可用)
MYNT® EYE 1200 SDK样例¶
设备插拔监听¶
初始化USBMonitor¶
mUSBMonitor = USBMonitor(mContext, object : USBMonitor.IUSBMonitorListener {
override fun didFoundCamera(camera: MYNTCamera) {
// 设备插入
}
override fun didDettach(camera: MYNTCamera) {
// 设备拔出
}
override fun didConnectedCamera(camera: MYNTCamera) {
// 连接成功
}
override fun didDisconnectedCamera(camera: MYNTCamera) {
// 断开
}
})
注册USBMonitor(启动监听USB)¶
mUSBMonitor?.register()
注销USBMonitor(停止监听USB)¶
mUSBMonitor?.unregister()
释放USBMonitor¶
mUSBMonitor?.destroy()
打开相机¶
设置Camera连接回调¶
mCamera?.setCameraListener(object : MYNTCamera.ICameraListener {
override fun didConnectedCamera(camera: MYNTCamera?) {
}
override fun didDisconnectedCamera(camera: MYNTCamera?) {
}
})
连接相机 (会弹出权限对话框)¶
mCamera?.connect()
连接成功后,开始获取数据¶
//打开设备
mCamera?.open()
// 设置IR
mCamera?.irCurrentValue = IR_DEFAULT_VALUE
backgroundHandler?.post {
if (mCamera == null) return@post
// 彩色图预览相关的对象
mColorSurface = Surface(colorTextureView.surfaceTexture)
// 深度图预览相关的对象
mDepthSurface = Surface(depthTextureView.surfaceTexture)
mCamera?.setPreviewDisplay(mDepthSurface, MYNTCamera.Frame.Depth)
mCamera?.setPreviewDisplay(mColorSurface, MYNTCamera.Frame.Color)
// 设置预览尺寸 (480 / 720)
mCamera?.setPreviewSize(previewSize.height)
// 设置深度类型 8bit / 11bit
mCamera?.setDepthType(depthType)
// 设置图像回调
mCamera?.setFrameCallback { data ->
if (data.flag == FrameData.DEPTH) {
// 深度图
}
if (data.flag == FrameData.COLOR) {
// 彩色图
}
}
// 开始预览
mCamera?.start(MYNTCamera.Source.ALL)
}
获取图像信息¶
设置图像信息回调¶
mCamera?.setFrameCallback { data ->
if (data.flag == FrameData.DEPTH) {
// 深度图
}
if (data.flag == FrameData.COLOR) {
// 彩色图
}
}
获取IMU数据¶
设置IMU数据回调 (带IMU机型)¶
mCamera?.setImuCallback { data ->
if (data.flag == ImuData.ACCELEROMETER) {
runOnUiThread {
accTextView.text = String.format("acc: x -> %.2f, y -> %.2f, z -> %.2f, timestamp -> %d, temperature -> %.2f", data.value[0], data.value[1], data.value[2], data.timestamp, data.temperature)
}
}
if (data.flag == ImuData.GYROSCOPE) {
runOnUiThread {
gyroTextView.text = String.format("gyro: x -> %.2f, y -> %.2f, z -> %.2f, timestamp -> %d, temperature -> %.2f", data.value[0], data.value[1], data.value[2], data.timestamp, data.temperature)
}
}
}
API 参考¶
USBMonitor¶
注册监听器¶
public void register()
注销监听器¶
public void unregister()
释放监听器¶
public void destroy()
MYNTCamera¶
是否已连接¶
public boolean isConnected()
是否开始预览¶
public boolean isStart()
是否已打开相机¶
public boolean isOpen()
是否是USB3.0¶
public boolean getIsUSB3()
是否支持IMU¶
public boolean isIMUSupported()
设备序列号¶
public String getSerialNumber()
设备名¶
public String getName()
设备类型¶
public int getCameraType()
设置相机的连接回调¶
public void setCameraListener(ICameraListener callback)
设置IMU信息的回调 (带IMU机型)¶
public void setImuCallback(IIMUCallback callback)
设置图像的回调¶
public void setFrameCallback(IFrameCallback callback)
连接相机¶
public void connect()
打开相机¶
public int open()
关闭相机¶
public void close()
开始预览(IMU / VIDEO / ALL)¶
public boolean start(Source source)
释放相机¶
public void destroy()
设置深度类型 (8bit / 11bit)¶
public void setDepthType(short depthType)
获取深度类型¶
public short getDepthType()
获取预览分辨率宽度¶
public int getPreviewWidth()
获取预览分辨率高度¶
public int getPreviewHeight()
设置预览用的Surface¶
public void setPreviewDisplay(Surface surface, Frame frame)
获取UVC FPS¶
public double getUVCFPS(Frame frame)
获取Preview FPS¶
public double getPreviewFPS(Frame frame)
获取相机内参¶
public RectifyLogData getRectifyLogData()
检测是否支持IR¶
public boolean isIRSupported()
设置IR值¶
public int setIRCurrentValue(int value)
获取当前彩色数据¶
public FrameData getColorFrameData()
获取当前深度数据¶
public FrameData getDepthFrameData()
获取当前IR值¶
public int getIRCurrentValue()
获取IR最小支持值¶
public int getIRMinValue()
获取IR最大支持值¶
public int getIRMaxValue()
将像素点对应的下标,转换为距离信息(单位 mm)¶
public int getDistanceValue(int index)
获取自动曝光开启状态¶
public boolean getAEStatusEnabled()
开启自动曝光¶
public void setEnableAE()
关闭自动曝光¶
public void setDisableAE()
获取自动白平衡开启状态¶
public boolean getAWBStatusEnabled()
开启自动白平衡¶
public void setEnableAWB()
关闭自动白平衡¶
public void setDisableAWB()
开关帧率显示¶
public void setEnableFrameFPS(boolean enable, int camera_switch)
保存点云¶
public void savePointCloud(final FrameData colorFrameData,
final FrameData depthFrameData,
final String filePath,
Boolean hasColor)
ImuData (带IMU机型)¶
数据类型¶
/**
* Data type
*
* 1: accelerometer
* 2: gyroscope
*
* */
public int flag;
时间戳¶
public long timestamp;
温度¶
public double temperature;
数据¶
/**
* Imu accelerometer data for 3-axis: X, Y, X.
* Imu gyroscope data for 3-axis: X, Y, Z.
*
* */
public double value[];
FrameData¶
数据类型¶
/**
*
* FrameData.COLOR
* FrameData.DEPTH
*
* */
public int flag;
图像宽度¶
public int width;
图像高度¶
public int height;
深度图类型¶
/**
* MYNTCamera.DEPTH_DATA_11_BITS
* MYNTCamera.DEPTH_DATA_8_BITS
*
* */
public int depthType;
获取bitmap¶
public Bitmap convert2Bitmap()
获取距离(只有flag为DEPTH时,可用)¶
public int getDistanceValue(int index)
获取距离(只有flag为DEPTH时,可用)¶
public int getDistanceValue(int x, int y)