sr4000自带API和opencv结合获取图像
/*
* =====================================================================================
*
* Filename: main.cpp
* Environment:
* Description: SR4K的API使用(libMesaSR.dll)
*
*
* Version: 1.0
* Created: 2013/10/30 20:47:31
* Author: yuliyang
I*
* Mail: wzyuliyang911@gmail.com
* Blog: http://www.cnblogs.com/yuliyang
*
* =====================================================================================
*/ #include "definesSR.h"
#include "libMesaSR.h"
#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std; /*------------------------------------------------------------------------------------------------------------
*
* 从内存中dump出内容
* 共144*176*sizeof(unsigned short int类型)个字节
*
*------------------------------------------------------------------------------------------------------------*/
//void Dump(unsigned char* p,int num)
//{
// puts("Dump of memory byte by byte regrouped in blocks of 8 byte\n"\
// " bytes: 0 1 2 3 4 5 6 7| 8 9 a b c d e f|1011121314151617|18191a1b1c1d1e1f|\n"\
// "--------:-----------------+----------------+----------------+----------------|");
// for(int i=0;i<num;i++)
// {
// if(!(i&0x1f))
// {
// printf("%08x: ",i);
// }
// printf("%02x",p[i]);
//
// if(!((i+1)&0x07))
// {
// putchar('|');
// if(!((i+1)&0x1f))
// {
// putchar('\n');
// }
// }
// }
// putchar('\n');
//}
int main(){ /*------------------------------------------------------------------------------------------------------------
* 创建一个SR4K设备对象
*------------------------------------------------------------------------------------------------------------*/
CMesaDevice *cam=NULL; SR_OpenDlg(&cam,,NULL); /*------------------------------------------------------------------------------------------------------------
* 设置工作模式在15MHZ
*------------------------------------------------------------------------------------------------------------*/
SR_SetModulationFrequency(cam,MF_15MHz);
SR_SetMode(cam,AM_COR_FIX_PTRN|AM_CONV_GRAY|AM_DENOISE_ANF); /* 其他一些属性的设置:去噪等 */ /*------------------------------------------------------------------------------------------------------------
* 获取行数和列数
*------------------------------------------------------------------------------------------------------------*/
int r= SR_GetRows(cam);
int c= SR_GetCols(cam); size_t bufSz=r*c**sizeof(unsigned int); /* 创建缓存 3种图像,depth图,Amplitude幅度图,和确信度图 */
void *buf=malloc(bufSz);
memset(buf,0xaf,bufSz); /* 缓存区清零 */
/*------------------------------------------------------------------------------------------------------------
* 以下用于坐标变换,转到笛卡尔坐标系
*------------------------------------------------------------------------------------------------------------*/
short *xS16=(short*)buf, *yS16=&xS16[r*c]; WORD *zU16=(WORD*)&yS16[r*c];
int pitchS16X=sizeof(short), pitchS16Y=sizeof(short), pitchU16Z=sizeof(WORD);
SR_Acquire(cam);
// SR_CoordTrfUint16(cam, 0, 0, zU16, pitchS16X, pitchS16Y, pitchU16Z);
SR_CoordTrfUint16(cam, xS16, yS16, zU16, pitchS16X, pitchS16Y, pitchU16Z); int num=SR_Acquire(cam); /* 触发设备获取图像 */
ImgEntry *images;
int numImg=SR_GetImageList(cam,&images); /* 获得图像列表 */
cout<<numImg<<endl;
void * data; /* 指向图像数据部分的指针 */ data=SR_GetImage(cam, );
/*------------------------------------------------------------------------------------------------------------
* 用opencv显示图像
*------------------------------------------------------------------------------------------------------------*/
IplImage *temp=cvCreateImage(cvSize(,),IPL_DEPTH_16U,);
unsigned short int * pdata;
pdata=(unsigned short int*)data;
for (int i=;i<temp->height;i++)
{
for (int j=;j<temp->width;j++)
{
CV_IMAGE_ELEM( temp, unsigned short int, i, j)=*pdata; /* 给图像赋值 */
pdata++; }
} /*------------------------------------------------------------------------------------------------------------
* 显示图像
*------------------------------------------------------------------------------------------------------------*/
cvShowImage("",temp);
cvWaitKey();
cvDestroyWindow("");
cvReleaseImage(&temp); /*for(int i=0;i<numImg;i++)
{
data=SR_GetImage(cam, i);
Dump((unsigned char*)data,(int)r*c*2);
}*/
/*WORD w1=images->width;
WORD h1=images->height;
cout<<images->dataType<<endl;
cout<<images->imgType<<endl; cout<<w1<<endl;
cout<<h1<<endl;*/
//SR_GetImage(cam,0);
//SR_StreamToFile(cam,"11.srs",0); /* 导出srs格式文件 */
//SR_StreamToFile(cam,"11.srs",2);
//SR_CoordTrfFlt(cam, x, y, z, sizeof(float) , sizeof(float) , sizeof(float)); /*-----------------------------------------------------------------------------
* 释放内存
*-----------------------------------------------------------------------------*/
SR_Close(cam) ;
free(buf); //free allocated buffers return ;
}
测试结果:

sr4000自带API和opencv结合获取图像的更多相关文章
- 通过zabbix自带api进行主机的批量添加操作
通过zabbix自带api进行批量添加主机 我们需要监控一台服务器的时候,当客户端装好zabbix-agent端并正确配置以后,需要在zabbix-server的web gui界面进行添加zabbix ...
- OpenCV开发笔记(七十三):红胖子8分钟带你使用opencv+dnn+yolov3识别物体
前言 级联分类器的效果并不是很好,准确度相对深度学习较低,上一章节使用了dnn中的tensorflow,本章使用yolov3模型,识别出具体的分类. Demo 320x320,置信度0 ...
- 修改SR4000自带软件,支持opencv
/*----------------------------------------------------------------------------- * * 版权声明: * 可以任意转载 ...
- SR4000自带软件修改(二)
/*----------------------------------------------------------------------------- * * 版权声明: * 可以 ...
- [Android Studio] Using API of OpenCV DNN
前言 一.故事背景 NDK方法人脸识别 OpenCV4Android系列: 1. OpenCV4Android开发实录(1):移植OpenCV3.3.0库到Android Studio 2.OpenC ...
- OpenCV开发笔记(七十二):红胖子8分钟带你使用opencv+dnn+tensorFlow识别物体
前言 级联分类器的效果并不是很好,准确度相对深度学习较低,本章使用opencv通过tensorflow深度学习,检测已有模型的分类. Demo 可以猜测,1其实是人,18序号类是狗 ...
- JAVA自带API的压缩与解压
Java API中的 java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作.我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. ZipFile j ...
- OpenCV 中获取图像或矩阵最大、最小值的简便方法
C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc ...
- Unity三种截屏方法(非自带API)
者利用了三种表现形式: 1,选择截图路径的方法 2,直接截取截屏的方法 3,截取鼠标圈选区域. 上代码,: 第一种是调用.net的类库,需要引用System.Windows.Forms.dll,在As ...
随机推荐
- OpenSUSE共享网络
因为想要使用Arduino Ethernet扩展版,想要搭建一个局域网供其使用有线,无奈路由器离我太远.遂有本文. 实验器材: 装有OpenSUSE.有线网卡.无线网卡的笔记本. 路由器一台. 实验步 ...
- sprintf函数php的详细使用方法
PHP sprintf() 函数 先说下为什么要写这个函数的前言,这个是我在微信二次开发的一个token验证文档也就是示例文档看到的一个函数,当时非常不理解,于是查了百度,但是很多结果都很笼统,结果也 ...
- dedecms 获取文章发布时间和获取文章最后更新时间
文章发布时间:[field:senddate function=MyDate('m-d',@me)/] 文章最后更新时间:[field:pubdate function=MyDate('m-d',@m ...
- JDBC链接
//1. MySQL(http://www.mysql.com)mm.mysql-2.0.2-bin.jar Connection con = null; Class.forName( " ...
- uCGUI窗口重绘代码分析
一.概述 µC/GUI的窗口重绘是学习者理解窗口工作原理和应用窗口操作的重点.µC/GUI的窗口重绘引入了回调机制,回调机制可以实现图形系统调用用户的代码,由于图形系统使用了剪切算法,使得屏幕重绘的效 ...
- 【Bean】 这才是bean,一直没仔细看
EJB是Enterprise Java Bean的缩写,一个Bean扮演着应用程序素材的角色.它包含有一个functional interface,一个life-cycle interface,以及一 ...
- ExtJS4.2学习(17)表单基本输入控件Ext.form.Field(转)
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-11/189.html --------------- ...
- 【综述】(MIT博士)林达华老师-"概率模型与计算机视觉”
[综述](MIT博士)林达华老师-"概率模型与计算机视觉” 距上一次邀请中国科学院的樊彬老师为我们撰写图像特征描述符方面的综述(http://www.sigvc.org/bbs/thread ...
- javascript 冒泡
http://www.cnblogs.com/hh54188/archive/2012/02/08/2343357.html http://blog.csdn.net/xuefeng0707/arti ...
- distinct 去重复查询——两个表join 连接,去掉重复的数据
------distinct 去重复查询 select * from accounts acc join (select distinct accid from roles) r on r.acci ...