相机标定外参怎么得出,摄像头内外参标定的参数,相机的内外参数标定

  相机标定外参怎么得出,摄像头内外参标定的参数,相机的内外参数标定

  单目相机内参标定(python)标定原理网上一大堆,就不在这赘述了,直接上代码。

  将cv2导入数字作为npimport glob#导入找棋盘格角点标定并且写入文件# 设置寻找亚像素角点的参数,采用的停止准则是最大循环次数30和最大误差容限0.001标准=(cv2 .TERM_CRITERIA_EPS cv2ITER,30,0.001) #阈值# 棋盘格模板规格w=8 # 9 - 1h=6 # 7 - 1#世界坐标系中的棋盘格点,例如(0,0,0), (1,0,0), (2,0,0) .(8,5,0),去掉Z坐标,记为二维矩阵objp=np.zeros((w*h,3),np.float32)objp[:2]=np.mgrid[0:w,0:h]。t形(-1,2)objp=objp * 21 #棋盘方块边长21毫米#储存棋盘格角点的世界坐标和图像坐标对objpoints=[] #在世界坐标系中的三维点imgpoints=[] #在图像平面的二维点图像=全球。glob( E:/code/1 _ 21mm _ 2/* .jpg) #拍摄的十几张棋盘图片所在目录对于图像中的fname,I=1:img=cv2。im read(fname)#获取画面中心点h1,w1=img.shape[0],img。shape[1]gray=cv2。CVT颜色(img,cv2 .COLOR_BGR2GRAY) u,v=img.shape[:2] print(u,v) #找到棋盘格角点ret,拐角=cv2。findchesboardcorners(灰色,(宽,高),无)#如果找到足够点对,将其存储起来如果ret==True: print(i:,i) i=i 1 #对检测到的角点作进一步的优化计算,可使角点的精度达到亚像素级别cv2.cornerSubPix(灰色,拐角,(11,11),(-1,-1),criteria)obj点。附加(objp)img点。追加(拐角)#将角点在图像上显示cv2。drawchesboardCorners(img,(w,h),Corners,ret)cv2。命名窗口(“查找角落”),cv2 .窗口_正常)cv2。调整窗口大小( find corners ,640,480) cv2.imshow(findCorners ,img)cv2。等待键(200)cv2。destroyallwindows()#标定打印(正在计算)ret,mtx,dist,rvecs,tvecs= cv2。校准相机(obj points,imgpoints,gray.shape[:-1],None,None)cv_file=cv2 .文件存储( E:/code/1 _ 21mm _ 2/camera。YAML,cv2 .文件存储写入)cv文件。WRITE( camera _ matrix ,mtx)cv_file.write(dist_coeff ,dist)#请注意,*释放*不会关闭()文件存储对象cv_file.release()print(ret:,ret)print(mtx:n ,mtx) #内参数矩阵打印(距离畸变值:n ,dist) #畸变系数失真系数=(k1,k2,P1,p2,k3)旋转(向量)外参:n ,rvecs) #旋转向量# 外参数打印( tvecs平移(向量)外参:n ,tvecs) #平移向量# 外参数newcameramtx,ROI=cv2。getoptimalnewcameramatrix(MTX区,(u,v),0,(u,v))print(newcameramtx外参,newcameramtx)相机=cv2 .视频捕获(0)而True:(gracked,frame)=camera.read() h1,w1=frame.shape[:2] #打开标定文件cv_file=cv2 .文件存储( E:/code/1 _ 21mm _ 2/camera。YAML,cv2 .文件_存储_读取)相机_矩阵=cv _文件。getnode( camera _ matrix ).mat()dist _ matrix=cv _ file。获取节点( dist _ coeff ).mat()cv _ file。release()newcameramtx,ROI=cv2。getoptimalnewcameramatrix(camera _ matrix,dist_matrix,(u,v),0,(u,v)) #纠正畸变dst 1=cv2。不失真(frame,camera_matrix,dist_matrix,None,newcameramtx) mapx,mapy=cv2。initundistortrectifymap(camera _ matrix,dist_matrix,None,newcameramtx,(w1,h1),5) dst2=cv2.remap(frame,mapx,mapy,cv2 .INTER_LINEAR) #裁剪图像,输出纠正畸变以后的图片x,y,w1,h1=roi dst1=dst1[y:y h1,x:x w1] cv2.imshow(dst1 ,dst 1)if cv2。等待键(1)0x ff==ord( q ):#按q保存一张图片cv2。im写( E:/code/1 _ 21mm _ 2/frame。jpg ,dst 1)破相机。释放()cv2。destroyallwindows()相机标定的棋盘生成程序见:https://博客。csdn。net/QQ _ 42598221/文章/详情/119212743

相机标定外参怎么得出,摄像头内外参标定的参数,相机的内外参数标定