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 ...
随机推荐
- SQL Server代理服务无法启动的处理方法(转载)
SQL Server代理服务无法启动问题的确很让我们头疼,下面就为您介绍SQL Server代理服务无法启动的处理方法,希望对您能有所帮助. --==配置环境服务器环境为32位Intel® Xeon® ...
- Linux启用MySQL的InnoDB引擎
前几天公司的一个项目组的同事反应说公司内部的一台Linux服务器上的MySQL没有InnoDB这个引擎,我当时想应该不可能啊,MySQL默认应该 就已经安装了这个引擎的吧,于是上服务器去看了看,发现还 ...
- 虚拟内存设备驱动memdev及实例代码
驱动: #include <linux/module.h> #include <linux/types.h> #include <linux/fs.h> #incl ...
- about building flying sauser
download flying sauser: unzip flyingsaucer-master.zip cd flyingsaucer-master/ mvn install
- Python复杂多重排序
1. cmp函数是python自带的函数,用于比较两个参数哪个大哪个小 print cmp(2, 3) # -1 如果第一个参数比第二个小,就返回-1,两个元素相等,返回0,否则返回1 2.所以就可以 ...
- Microsoft SQL Server 2008 R2 中文安装说明
Microsoft SQL Server 2008 基本安装说明 安装SQL2008的过程与SQL2005的程序基本一样,只不过在安装的过程中部分选项有所改变,当然如果只熟悉SQL2000安装的同志来 ...
- HTTP - PUT 上传文件/Shell
今天遇到几个PUT上传的点,但是都没利用起来.一怒之下,在自己本地试了一下.步骤如下: 一.环境: 首先,根据 配置Apache服务器支持向目录PUT文件 更新一下httpd.conf文件,重启所有服 ...
- DB天气app冲刺第四天
今天卡壳了 做得很慢.. 明天继续 换一种思路试一下吧..
- JS数组整理
1. 检测数组的方法: 1. instanceof[操作符]: var arr = []; console.log(arr instanceof Array);//true 1. instanceof ...
- Ajax.BeginForm返回方法OnSuccess
在MVC3里面——程序集 System.Web.Mvc.dll, v4.0.30319有这么一个Ajax.BeginForm异步登录验证的类型,我们在下面给出一个例子:在登录页面Logion.csht ...