本篇文章8005字,读完约20分钟

如果有组关联,也可以找组主。 最近正在研究双目视觉测距数据。 网上真的有很多c,但我不清楚你的个人感受。 对白来说,开始特别困难。 这里提供一个非常愚蠢的教程。 标记图形界面,不需要代码。 然后c实现测距和深度图。 大概太多了我不说白。 就这样吧,好的

“opencv实现双目视觉测距”

硬件准备

? -c -

软件准备

matlab工具箱校准工具箱

c代码

有关配置vsopencv的信息,请参阅此博客。 cnblogs/linshuhe/p/5764394已得到充分详细的说明。 我们有必要采用vsopencv3.1实现实时测距

2matlab校准* * *

matlab用于校准单眼摄像机和双目摄像机。 这个已经做了。 直接浏览这个博客。 blog.csdn/Hyacinth kiss/article/details/41317087

在准备以上工具之前,不能正式开始

或者使用c进行单眼和双眼校准

单一顾客确定

# include i ostream # include stream # include time . h # include estdio . h # include stream # include eopen v2/core/core . hpp # include eopen v2/imgproc/imgproc . hpp # include eopen v2/calib3d/calib3d . hpp # include eopen v2/high gui/high gui . hppusingnamespace cv;采用命名空间td;# define calibration intmain(){ # ifdefcalibrationfsstreamin(用于校准的图像文件的right _ img.txt/*路径*/ofstream fout(用于留存校准结果的calibration _ result _ right.txt/*文件*////读取各个图像以从中提取角点,然后对角点执行亚像素精度intimage _ count0/*图像数量*/sizeimage _ size;/*图像的大小*/sizeboard_sizesize(11,8);/*校准板上各行各列的角点*/vector point 2 fimage _ points _ buf;/*缓存在各个图像上检测到的角*/vector point 2 fimage _ points _ seq;/*留存全部检测到的角*/stringfilename;//图片名称vectorstringfilenameswhile(getline(fin,filename)){ image _ count;matimageinputimread(文件名);filename . push _ back(filename);//获取图片大小if(image _ count 1){ image _ size . width imageinput . cols;image _ size . height imageinput . row;}/*提取角点*/if(0 find棋盘角点(image input,board _ size,image _ points _ buf)){//cout can find棋盘角点!# #包括流#包括流#包括时间. h #包括流#包括流2 /核心.惠普# img proc 采用calib 3d.HPP # includee openv2/ highgui/highgui.hppusingnamespacecv命名空之间的td格式。 # define calibration intmain ( ) { # ifdefcalibrationfsstreamin (用于校准的图像文件的right _ img.txt/*路径*/ofstream fout (密钥 ////读取各图像并提取角点,对角点进行子像素精度intimage _ count0/*图像数*/sizeimage _ size; /*图像的大小*/size board _ sizesize ( 11,8 )/*校准板各行各列的角*/vector point2f图像_ points _ buf; /*缓存在各图像中检测到的角*/vector point 2f图像_ points _ seq; /*保留所有检测到的角* /字符串文件名; //图像名称vectorstringfilenameswhile ( getline ( fin,文件名) ) {图像_计数; matimageinputimread (文件名)文件名.推后(文件名)://图像大小if (图像计数1 ) { image _ size.widthimane image _ size.heightimageinput.row; 抽出/ *角*/if(0 find盘角(图像输入、板尺寸、图像点_ buf ) ) {//cout can find盘角!

“opencv实现双目视觉测距”

找不到/ corner cout * *文件名* * cannotfindchesboardcorners角点!

出口(1) {2} else _ matview _ graycvtcolor (图像输入、视图_灰色、cv _ RGB 2灰色)//旋转灰度/*子像素的精密化*// immo 作为大小( 5,5 ),窗口大小//-1-1表示无死区/用语标准角的反复过程的结束条件,也可以是反复次数和角精度两者的image_points_buf,size ( 5,5 ) push _ back (图像点buf )://保留子像素的角/*在图像上显示角的位置*/drawschesboodcorps(view _ gray,board _ ) /显示图像的waitkey(500 )//暂停0.5s } } intcornernumboard _ size宽度*纸板的尺寸。 身高; //各图像上的总角点数/-以下是摄像机校准- /*盘三维新闻*/size square _ sizesize ( 60,60 )/*实际测量得到的额定板各检查的大小*/vectte / * *留保定格板上角的三维坐标*/*内外参数*/matcameramatrixmat ( 3,3,cv_32fc1,标量: 3360 all(0) ); /*摄像机内参数矩阵*/矢量点数; //每个图像的角的数量matdistceffsmat ( 1,5,cv_32fc1,标量: 3360 all(0) ):/*摄像机的五个失真系数k1、k2、p1、p2、k3 */vectoro /*每个图像的旋转矢量*/vectoratrvecsmat; /*各图像的平行移动矢量*/*初始化额定值板上的角的三维坐标*/inti、j、t; for(t0; timage _ count ) {向量点3仿真点集; for(i0; iboard _ size . height ) { for(j0; j板尺寸. width j ) {点3自由点; 假定/*额定值板位于世界坐标系中z0的平面上*/realpoint。 xi *平方码宽度; 真正的重点。 yj * square _ size身高realpoint.z 0时间点组。 推回(报告); {1}对象点。 push _ back(temppointset ) }/*初始化各图像中的角数在各图像中为完全的标定板*/for(i0; ii图像_计数I ) {点计数。 推回(基板尺寸。 宽度*纸板的尺寸。 身高); }/*标定开始*///对象_点世界坐标系中角点的三维坐标//image_points_seq各内角点所对应的图像坐标点//图像_尺寸图像的像素尺寸//cameramatrix输出内参考矩阵 校准摄像机(对象_点、图像_点_序列、图像_大小、摄像机矩阵、距离、服务器矩阵、电视矩阵、0 )。 /-标定完成-/-评价标定结果-double total _ err 0.0; /*所有图像的平均误差的总和*/double err 0.0; /*每幅图像的平均误差* /矢量点2 f图像点2; /*保留每个重新计算的投影点*/fout图像的标定误差

“opencv实现双目视觉测距”

for(i0; ii图像_计数I ) {向量点3 ftemppointsetobject _ points[i]; /*通过用得到的摄像机内外参数重新投影计算空之间的三维点,可以得到新的投影点*/投影点( temppointset,rvecsmat[i],tvecsmat[i],cameramatrix ) mattempimagepointmatmat(1,tempimagepoint.size ( ),cv _ 32fc 2); 马体image _ points 2 matat(1、image_points2.size ( )、cv _ 32 fc2)为( int j 0; jtempimagepoint size ( ); j ) {图像点2最大点2 f ( 0,j )向量2f (图像点2 [ j ] ).x,图像点2 [ j ] . tempimagepointmat.atvec2f(0,j ) vec2f(tempimagepoint[j].x,tempimagepoint[j].y ); Errno RM (图像点2最大值、时间点最大值、范数L2 )总错误/点计数[ I ]; 第fout张图像的平均误差犯罪像素endl}fout整体的平均误差total_err/image_count像素endl/-评价完成- //-保留结果- mat rotation _ matrix mat ( 3,3,3,3,三个)。

“opencv实现双目视觉测距”

他妈的粘糊糊的没完没了;对于(inti 0);s7-1200可编程控制器:(一){疯了什么事我一号-你好-你好结束;结束;fouttvecsmat[i]端;/*我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说*/rodrigues(tvecmat[i],rotation _ matrix);他妈的什么事我一号-你好-你好结束;结束;该死的foutrotation _ matrixendl:他妈的什么事我一号-你好-你好结束;结束;他妈的无止境;{}混蛋;///-鲁仲宣是鲁仲宣-什么1740年- matmapxmat(image_size、cv _ 32 fc 1);matmapymat(image_size,cv _ 32 fc 1);matrmat :眼(3,3,cv _ 32f);string imagefilename std : stringstreamsstrtm对于(inti 0);-我!image_count:(一){ initunderstorctypymap(cameramatrix、distcoeffs、r、cameramatrix、image_size、cv_32fc1、mapx、mapy);matimagesourceimread(文件名[i]);matnewimageimagesource。clone():remap(imagesource、newimage、mapx、mapy、inter _ linear);strstm。clear();imagefilename . clear():str smi 1;strsmimagefilename image filename filename _ d . jpgi write(图像文件名,新图像);}结束。close();fout。close();#else//嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨嗨两个阿悦matsrcimread(f 3330 \ \ lane _ line _ detection \ \ left _ img \ \ 1。jpgmatdetastorrc。clone());matcamera_matrixmat(3,3,cv _ 32 fc 1);系数扭曲://你是谁?你是谁?你是谁文件存储区(f 3330 \ \ lane _ line _ detection \ \ left _ img \ \ intringual。xml,文件存储3:读取);storage _ file[camera matrix]camera _ matrix:storage _ file[dist]系数畸变:file_storage.release()://阿积cv : un docster(src,畸变,摄像机矩阵,畸变_系数);cv 3: im show(img、src);cv : imshow(扭曲);cv 3: mw itri(unds侵权。jpg,畸变);cv 3: 360等待键(0);#endif//debugreturn0:}粘糊糊的没有完。 ( inti 0)的情况s7-1200可编程控制器:(一) {疯狂的事是我第一个-你好-你好,结束。 结束; 我,也就是我,我,我,我,我,我,我,我,我,我,我,我,我,我,我,我,我,我 发生了什么事? - -你好-你好,结束。 结束; 可恶的旋转矩阵结束符:发生了什么事? 结束; 没完没了; {}混蛋; //-鲁仲宣是鲁仲宣-什么1740年- matmapxmat(image_size,cv _ 32 fc 1); matmapymat (图像大小,cv _ 32 fc 1) matrmat :眼睛( 3,3,cv _ 32f ) stringimagefilenamestd:stringstreamstrtm对(英寸) image_count:(1) {内部矩阵、分布式矩阵、r、相机矩阵、图像大小、cv_32fc1、} 克隆( ) :映射(图像源、新图像、映射、映射、间线性) strstm。 clear ( ); 图像文件名. clear ( ):str smi 1; strsmimagefilenameimagefilenamefilename _ d.jpgi write (图像文件名,新图像) }退出。 克洛斯( ); 福特。 克洛斯( ); #else//嗨,嗨,嗨,嗨,嗨,嗨,嗨,嗨,嗨,嗨,嗨,嗨,嗨。 克隆( ); mat camera _ matrix mat ( 3,3,cv _ 32 fc 1)系数扭转://你是谁? 你是谁你是谁的文件商店? ( f 3330 \线_检测\ \左侧_ img \内部。 xml,文件存储3 :读取)存储_文件[相机矩阵]相机矩阵:存储_文件系数失真:文件_存储 cv 3: im show(img、src ) cv : imshow (扭转) cv 3: mw itri(unds侵害)。 jpg、应变) cv 3: 360等待键(0) #endif//debugreturn0:}

“opencv实现双目视觉测距”

//吴亚玲!吴亚玲# include open cv 2/core/core。hpp #包含opencv 2/img proc/img proc。hpp # include opencv 2/calib 3d/calib 3d。hpp # include open cv 2/high gui/high gui。hpp #包含向量#包含字符串#包含流#包含迭代器#包含stdio。h #包含stdlib。h #包含cttype。h # include open cv 2/open cv。hpp/#包括简历。h/#包括cv。h/#包括cv发电厂mesfeitscv//阿祖阿祖阿祖阿祖阿祖阿祖阿constitutionimagewidth 640 constitutionimageheight 480//阿云阿云阿云阿云阿云阿云constitt board width 11//鲁仲尼鲁仲尼组成板高度8;//-什么恒定纸板宽度*纸板高度;//阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥阿云哥constantframe框架编号8;//黄头发的人mmconstit平方尺寸60//范仲淹是范仲淹constsizaardizize(板宽、板高);尺寸最小尺寸(图像宽度、图像高度);马特、t、e、f;//r阿叔阿叔阿叔-t1790年然后呢巴蒂扬范希阳f .非政府组织哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟病媒病毒;//mattovecs检查器;//t//不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不矢量点2 fimagepointl//喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂矢量点2 fimagepointr//喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂喂矢量点3 fobjrealpoint//你好吗?你好吗?矢量点2 fcornerl//唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟/吴亚玲! 吴亚玲# include open cv2/酷睿/酷睿。 hpp #包括opencv 2/img proc/img proc,位于其中。 HPP #包括开放2 /电缆3 d /电缆3 d。 HPP #包括开放2/highgui/highgui。 hpp #包含向量#包含字符串#包含流#包含迭代器#包含stdio。 h #包含stdlib。 h #包含CT类型。 h #包括开放CV2/开放CV。 hpp/#包括简历。 h/#含有cv。 h/#包括cv电厂mesfeitscv//阿祖阿祖阿祖阿祖阿祖阿constitution image width 640 constitution image height 480 /阿云阿云阿云阿云constittboardwidth1 /阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥阿云哥哥constantframe帧号8; //金发人mmconstit平方尺寸60//范仲淹是范仲淹constsizaardizize (板宽、板高)尺寸最小尺寸(图像宽度、图像高度)垫、t、e、f; “r叔叔-t1790年,就这样吧,就这样吧,就这样吧,就这样吧,就这样吧,就这样吧,就这样吧”。 //mattovecs检查器//t//不,不,不,不,不,不,不,“不,不,” 不,不,不,不,不,不,不,不,你好吗? 一次又一次、一次、一次、多次、一次又一次地重复

“opencv实现双目视觉测距”

标题:“opencv实现双目视觉测距”

地址:http://www.hongyupm.com/gnyw/3914.html