光电子课程设计 - 基于三角测量法的激光测距 - 图文(2)

2019-09-02 17:40

3.3激光出射角

本实验,需要激光出射是保证出射角为90°,所以也要对出射角进行调试,当激光出射角也定好后,整个作品基本完成,剩下的是对程序进行调试。

调试过程如下:

PC程序设计

4.1摄像头调用

在主程序开始时,利用OpenCV调用摄像头出来。模块代码如下:

HWND MyWin; // 设置系统属性

cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE);//Enable视讯 //0:欲设置属性的摄像头序号; 第二个参数是属性名字; //第三个参数是指向设置值的指针

cvcamSetProperty(0, CVCAM_PROP_RENDER, CVCAMTRUE); //启用视讯 // MyWin 是窗口 HWND 的类型

MyWin = (HWND) cvGetWindowHandle(\

cvcamSetProperty(0, CVCAM_PROP_WINDOW, &MyWin); // Selects a window

cvcamSetProperty(0,CVCAM_RNDWIDTH,&width); cvcamSetProperty(0,CVCAM_RNDHEIGHT,&height);

//video rendering

//回调函数将处理每一帧

cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback);

4.2光点定位

光点定位是整个模块的核心,光点定位的准直会直接影响测量的准确性。设计程序如下:

cvcamGetProperty(1,\ int height = img->height; int width = img->width; int step = img->widthStep; int channels = img->nChannels;

uchar* data = (uchar *)img->imageData; int x,y;

int Real_x=0,Real_y=0; int i=0,j=280; int sum_x=0;

int max_light_intensity=250;//人为设定的感光强度 for( x=0;xwidth;x++) {

for(y=1;yheight;y++)//从左往右进行列扫描 {

if(data[y*step+x*channels+2]>max_light_intensity) {

sum_x=sum_x+x; i++; } } }

if(i>0) {

Real_x=sum_x/i;//实际像素点在X轴上的位置 Real_x=Real_x-j;

printf(\符合光强的像素点有%d个\\n\像素点多少,越多证明像素点越大,精确度越差

double L=100*3.85/(Real_x*6); printf(\测得距离为:\ printf(\米\

结论:

本次实验,主要是解决摄像头与激光出射角的定标。但由于是人为确定,并且激光器功率不算太大,只能在较短距离的空间范围内进行定标。其次,程序方面相对容易解决,并且通过程序的优化,确确实实地达到测量精度更加准确。

在这几天的研究制作当中,对摄像头成像的原理有了更深入的了解。同时,意识到在程序更进一步的优化还是有不懂的地方,这需要我们在后续的工作更着重分析、研究。通过这次的研究实验,在团队的合力之下。解决了遇到的绝大部分问题,虽然不足之处还是存在,例如不能测5m之外的距离。但在短距离20cm到150cm之内还是能较准确地得到测量距离,总体上实现了计划之初的目标。


光电子课程设计 - 基于三角测量法的激光测距 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015安徽蚌埠教师考编面试技巧之女教师礼仪篇的着装

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: