系统要求、系统配置、开发环境

Windows XP 及以后,X86(32/64bit)
Ubuntu 12.04 及以后,X86(32/64bit)
CPU 奔腾 4,1.4GHz 及以上
内存 512MB 以上
USB 2.0 高速端口

sdk下载安装及运行官方demo

  • Windows安装步骤:

    ImiNectInstaller.msi下载地址:
    http://bbs.hjimi.com/forum.php?mod=viewthread&tid=37704
    1、点击 ImiNectInstaller.msi,按提示完成安装。默认安装目录为 C:\Program Files (x86)\Hjimi\ImiSDK
    2.安装完成后,可运行 Tools/ImiNectExplorer-D3D 目录下运行 ImiNectExplorer-D3D.exe
    3.示例代码为 Examples/ Example.sln 工程。

  • LInux平台安装步骤
    http://bbs.hjimi.com/forum.php?mod=viewthread&tid=37706&extra=page%3D1
    1、解压安装包 ImiNect_linux.tar.gz。
    参考命令:
    tar –xvf ImiNect_linux.tar
    2、进入 Driver 目录,运行 iminectDriver_linux.sh。
    参考命令:
    chmod +x iminectDriver_linux.sh
    sudo ./iminectDriver_linux.sh

    深度图像获取

    windows+vs2013+opencv 保存16位深度图像,格式为png

    1、opencv安装+vs2013配置
    直接官网下载:http://opencv.org/
    安装和配置:http://blog.csdn.net/wzw_ice/article/details/77159741

    2、vs项目配置华捷艾米sdk

    (1)右键项目,进入项目属性页,选择Debug配置
    (2)VC++目录:
    包含目录中 添加华捷官方驱动的include文件夹,如:
    C:\Program Files(x86)\Hjimi\ImiSDK\Include
    库目录中 添加依赖库(个人将所有的加上了),如:
    C:\Program Files(x86)\Hjimi\ImiSDK\Redist\Win32
    C:\Program Files(x86)\Hjimi\ImiSDK\3rdparty\freeglut-2.8.1\lib\Win32\Release
    C:\Program Files(x86)\Hjimi\ImiSDK\3rdparty\freeglut-2.8.1\lib\Win32\Debug
    C:\Program Files(x86)\Hjimi\ImiSDK\3rdparty\d3d\lib\x64
    C:\Program Files(x86)\Hjimi\ImiSDK\3rdparty\d3d\lib\Win32
    C:\Program Files(x86)\Hjimi\ImiSDK\3rdparty\lib\x64
    C:\Program Files(x86)\Hjimi\ImiSDK\3rdparty\lib\Win32
    (3)链接器->输入->附加依赖项,添加
    ImiNect.lib

    3 个人项目代码(从官方demo提取出来并通过opencv获取深度图像保存为16bit的png)
    main.cpp

#include "ImiNect.h"
#include "Render.h"
#include <windows.h>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <stdio.h>
#include <string.h>
#ifndef _WIN32
#include <unistd.h>
#endif#define MAX_DEPTH               10000
#define IMAGE_LENGTH            640
#define IMAGE_HEIGHT            480
#define DEFAULT_PERPIXEL_BITS   16
#define DEFAULT_FRAMERATE       30using namespace std;
using namespace cv;
// window handle
SampleRender* g_pRender = NULL;//stream handles
uint32_t        g_streamNum = 0;
ImiStreamHandle g_streams[10] = { NULL };void calculateHistogram(float* pHistogram, int histogramSize, const ImiImageFrame* frame)
{const uint16_t* pDepth = (const uint16_t*)frame->pData;//获取深度图像数据USHORT * depthf = (USHORT*)frame->pData;Mat depthTmp(IMAGE_HEIGHT, IMAGE_LENGTH, CV_16U, depthf);imshow("DepthOrigin", depthTmp);imwrite("./image/1.png", depthTmp);memset(pHistogram, 0, histogramSize*sizeof(float));int height = frame->height;int width = frame->width;unsigned int nNumberOfPoints = 0;for (int y = 0; y < height; ++y){for (int x = 0; x < width; ++x, ++pDepth){if (*pDepth != 0){pHistogram[*pDepth]++;nNumberOfPoints++;}}}for (int nIndex=1; nIndex<histogramSize; nIndex++){pHistogram[nIndex] += pHistogram[nIndex-1];}if (nNumberOfPoints){for (int nIndex=1; nIndex<histogramSize; nIndex++){pHistogram[nIndex] = (256 * (1.0f - (pHistogram[nIndex] / nNumberOfPoints)));}}
}// window callback, called by SampleRender::display()
static bool needImage(void* pData)
{static float        g_depthHist[MAX_DEPTH];static RGB888Pixel  g_rgbImage[1280 * 1024];int32_t avStreamIndex;ImiImageFrame* pFrame = NULL;// wait for stream, -1 means infinite;if(0 != imiWaitForStreams(g_streams, g_streamNum, &avStreamIndex, 100)){
#ifdef _WIN32printf("Warning:Wait for streams timeout!\n");Sleep(500);
#elseusleep(500*1000);
#endifreturn false;}/*printf("channel index : %d\n", avStreamIndex);*/if ((avStreamIndex < 0)  || ((uint32_t)avStreamIndex >= g_streamNum)) {printf("imiWaitForStream returns 0, but channel index abnormal: %d\n", avStreamIndex);return false;}// frame coming, read.if (0 != imiReadNextFrame(g_streams[avStreamIndex], &pFrame, 0)){printf("imiReadNextFrame Failed, channel index : %d\n", avStreamIndex);return false;}// Calculate histogramcalculateHistogram(g_depthHist, MAX_DEPTH, pFrame);uint32_t rgbSize;uint16_t * pde = (uint16_t*)pFrame->pData;for (rgbSize = 0; rgbSize < pFrame->size/2; ++rgbSize) {g_rgbImage[rgbSize].r = g_depthHist[pde[rgbSize]];g_rgbImage[rgbSize].g = g_rgbImage[rgbSize].r;g_rgbImage[rgbSize].b = 0;//display yellow}// Drawg_pRender->draw(-1, (uint8_t*)g_rgbImage, rgbSize, pFrame->width, pFrame->height, &pFrame);// call this while imiReadNextFrame returns 0;imiReleaseFrame(&pFrame);return true;
}int main(int argc, char** argv)
{//1.imiInitialize()if (0 != imiInitialize(NULL)) {printf("ImiNect Init Failed!\n");return -1;}printf("ImiNect Init Success.\n");//2.imiGetDeviceList()ImiDeviceAttribute* pDeviceAttr = NULL;uint32_t deviceCount = 0;imiGetDeviceList(&pDeviceAttr, &deviceCount);if( deviceCount <= 0 || NULL == pDeviceAttr ) {printf("Get No Connected Imidevice!");imiDestroy();return -1;        }printf("Get %d Connected Imidevice.\n", deviceCount);//3.imiOpenDevice()ImiDeviceHandle pImiDevice = NULL;if( 0 != imiOpenDevice(pDeviceAttr[0].uri, &pImiDevice, 0) ){printf("Open Imidevice Failed!\n");goto exit;}printf("Imidevice Opened.\n");//4.imiOpenStream()if ( 0 != imiOpenStream(pImiDevice, IMI_DEPTH_FRAME, NULL, NULL, &g_streams[g_streamNum++]) ){printf("Open Depth Stream Failed!\n");goto exit;}printf("Open Depth Stream Success.\n");//5.create window and set read Stream frame data callbackg_pRender = new SampleRender("Depth Image View", IMAGE_LENGTH, IMAGE_HEIGHT+8);  // window title & sizeg_pRender->init(argc, argv);// read frame data callbackg_pRender->setDataCallback(needImage, NULL);g_pRender->run();exit://6.imiCloseStream()    for (uint32_t num = 0; num < g_streamNum; ++num){if (NULL != g_streams[num]){imiCloseStream(g_streams[num]);}}//7.imiCloseDevice()if (NULL != pImiDevice){imiCloseDevice(pImiDevice);}//8.imiReleaseDeviceList()if(NULL != pDeviceAttr){imiReleaseDeviceList(&pDeviceAttr);}//9.imiDestroy()imiDestroy();if (NULL != g_pRender){delete g_pRender;g_pRender = NULL;}getchar();return 0;
}

另外两个cpp文件未做修改,Utill.cpp、Render.cpp

市场上各种深度摄像头测试之华捷艾米A100相关推荐

  1. 市场上各种深度摄像头测试之Kinect V2

    系统要求.系统配置.开发环境 处理器:支持64位(x64)高主频的处理器 建议:AMD羿龙 X4及以上或intel i3及更快的处理器 内存:4 GB DDR 3 1600MHZ 及更大的内存 建议: ...

  2. 华捷艾米a200摄像头_华捷艾米:3D MR打破行业边界,优化产业结构,让生活更美好...

    原标题:华捷艾米:3D MR打破行业边界,优化产业结构,让生活更美好 12月18日,由北京师范大学新闻传播学院和人民网主办,华捷艾米等联合主办的第三届中国VR/AR/MR创作大赛金铎奖颁奖典礼在北师大 ...

  3. 硬纪元AI峰会实录|华捷艾米沈瑄:端加云才是AI和AR的未来

    关于人机交互,关于AI和AR的未来,我们应该如何看待? 2017年7月9日,由镁客网.振威集团联合主办的"3E'硬纪元'AI+产业应用创新峰会"在北京国家会议中心盛大开幕.现场20 ...

  4. 华捷艾米王亚楠:3D MR让未来无限可能

    (华捷艾米王亚楠:3D MR让未来无限可能) 11月16日,华捷艾米受邀出席了以"软硬兼"摄",听·见AI"为主题的"2018重庆·国际AI Phon ...

  5. 奥比中光深度摄像头_苹果收购Primesense后,奥比中光希望用它的深度摄像头填补市场空白...

    提到体感技术和深度摄像头,很多人的第一印象就是微软的Kinect.然而微软的第一代Kinect技术来自Primesense的授权.2005年创建于以色列的 PrimeSense 可谓深度摄像头技术的先 ...

  6. 市场上的安防摄像头或安防系统多少钱?安防摄像头价格指南

    市场上的安防摄像头或安防系统多少钱?你认为高质量的安防摄像头系统应该是什么价格?当你在思考这个问题时,你需要问自己心中的预算是多少,花费这个价钱是否值得. 如果你已经购买安防摄像头和设备有一段时间了, ...

  7. 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头

    关心AI的人们都关注了此号☝☝☝ 于是,没有iPhone X,我也可以在我仅2000元的安卓机上玩转黑科技了. 记者:鸽子 在我威威天朝,表情包早已泛滥在各类社交应用程序中,如今,咱可以玩点新的包了. ...

  8. 安卓开发基础知识3(国内深度摄像头方案)

    需求说明:安卓开发 内容       :双摄像头安卓手机调研 来自       :时间的诗 原文:http://www.tuicool.com/articles/zUzmAnu 引言:市场对深度视觉技 ...

  9. 不得不看!国内深度摄像头方案大起底

    origin: http://pieeco.baijia.baidu.com/article/517947 引言:市场对深度视觉技术需求趋于井喷,但可以提供产品和方案的公司寥寥无几,本文分析了国内三家 ...

最新文章

  1. 2009年总结-爱与快乐着
  2. C++加号运算符重载
  3. find_all 返回空 python_python小课堂23 - 正则表达式(一)
  4. 我对DevOps的理解
  5. 关于安装Ubuntu后触摸板无法使用的解决方案
  6. Zoom 5.1.2及旧版本在 Win7 上的 DLL 劫持漏洞分析
  7. 用idea搭建SSM框架maven项目
  8. @AutoConfigureAfter注解
  9. mysql select if 使用
  10. GaRy-Liang的linux成长日记2-系统安装
  11. csdn 问答使用与测评
  12. LM358电流检测电路
  13. kubernetes(k8s)第五部分之K8s部署nginx
  14. 计算机毕业设计之SpringBoot+Vue.js+WebMagic电商数据分析 电商大数据 电商数据采集系统 电商大屏 大数据毕业设计 电商知识图谱
  15. JavaScript词汇表
  16. 简单的命令改善你的Linux安全
  17. Kafka入门教程(一)
  18. (转载)验证下载下来的文件的完整性的方法
  19. S君 被父母毁掉的一生 r瓴
  20. EditPlus 设置关闭后不打开未关闭的文件,以及设置在同一个窗口打开多个文件

热门文章

  1. 旋转正方体加径向渐变
  2. 手把手教你如何通过Java给图片添加文字和图片水印
  3. 传销式招聘!被骗到东南亚的程序员到底有多惨?
  4. matlab传函零极点形式,计算机建模与仿真
  5. 关于ImportError: No module named ‘tensorflow‘报错的解决
  6. 内德-米德方法——《数值计算方法》
  7. 三菱编程软件GX Works2
  8. Excel 文本转数值的方法
  9. 火狐开发版_Firefox普通版和开发版之间有什么区别?
  10. 分享 | 日置3561电池测试仪调零/自校准详解教程