市场上各种深度摄像头测试之华捷艾米A100
系统要求、系统配置、开发环境
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/771597412、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.lib3 个人项目代码(从官方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相关推荐
- 市场上各种深度摄像头测试之Kinect V2
系统要求.系统配置.开发环境 处理器:支持64位(x64)高主频的处理器 建议:AMD羿龙 X4及以上或intel i3及更快的处理器 内存:4 GB DDR 3 1600MHZ 及更大的内存 建议: ...
- 华捷艾米a200摄像头_华捷艾米:3D MR打破行业边界,优化产业结构,让生活更美好...
原标题:华捷艾米:3D MR打破行业边界,优化产业结构,让生活更美好 12月18日,由北京师范大学新闻传播学院和人民网主办,华捷艾米等联合主办的第三届中国VR/AR/MR创作大赛金铎奖颁奖典礼在北师大 ...
- 硬纪元AI峰会实录|华捷艾米沈瑄:端加云才是AI和AR的未来
关于人机交互,关于AI和AR的未来,我们应该如何看待? 2017年7月9日,由镁客网.振威集团联合主办的"3E'硬纪元'AI+产业应用创新峰会"在北京国家会议中心盛大开幕.现场20 ...
- 华捷艾米王亚楠:3D MR让未来无限可能
(华捷艾米王亚楠:3D MR让未来无限可能) 11月16日,华捷艾米受邀出席了以"软硬兼"摄",听·见AI"为主题的"2018重庆·国际AI Phon ...
- 奥比中光深度摄像头_苹果收购Primesense后,奥比中光希望用它的深度摄像头填补市场空白...
提到体感技术和深度摄像头,很多人的第一印象就是微软的Kinect.然而微软的第一代Kinect技术来自Primesense的授权.2005年创建于以色列的 PrimeSense 可谓深度摄像头技术的先 ...
- 市场上的安防摄像头或安防系统多少钱?安防摄像头价格指南
市场上的安防摄像头或安防系统多少钱?你认为高质量的安防摄像头系统应该是什么价格?当你在思考这个问题时,你需要问自己心中的预算是多少,花费这个价钱是否值得. 如果你已经购买安防摄像头和设备有一段时间了, ...
- 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头
关心AI的人们都关注了此号☝☝☝ 于是,没有iPhone X,我也可以在我仅2000元的安卓机上玩转黑科技了. 记者:鸽子 在我威威天朝,表情包早已泛滥在各类社交应用程序中,如今,咱可以玩点新的包了. ...
- 安卓开发基础知识3(国内深度摄像头方案)
需求说明:安卓开发 内容 :双摄像头安卓手机调研 来自 :时间的诗 原文:http://www.tuicool.com/articles/zUzmAnu 引言:市场对深度视觉技 ...
- 不得不看!国内深度摄像头方案大起底
origin: http://pieeco.baijia.baidu.com/article/517947 引言:市场对深度视觉技术需求趋于井喷,但可以提供产品和方案的公司寥寥无几,本文分析了国内三家 ...
最新文章
- 2009年总结-爱与快乐着
- C++加号运算符重载
- find_all 返回空 python_python小课堂23 - 正则表达式(一)
- 我对DevOps的理解
- 关于安装Ubuntu后触摸板无法使用的解决方案
- Zoom 5.1.2及旧版本在 Win7 上的 DLL 劫持漏洞分析
- 用idea搭建SSM框架maven项目
- @AutoConfigureAfter注解
- mysql select if 使用
- GaRy-Liang的linux成长日记2-系统安装
- csdn 问答使用与测评
- LM358电流检测电路
- kubernetes(k8s)第五部分之K8s部署nginx
- 计算机毕业设计之SpringBoot+Vue.js+WebMagic电商数据分析 电商大数据 电商数据采集系统 电商大屏 大数据毕业设计 电商知识图谱
- JavaScript词汇表
- 简单的命令改善你的Linux安全
- Kafka入门教程(一)
- (转载)验证下载下来的文件的完整性的方法
- S君 被父母毁掉的一生 r瓴
- EditPlus 设置关闭后不打开未关闭的文件,以及设置在同一个窗口打开多个文件