opencv摄像头识别,opencv相机标定原理
主要介绍opencv摄像机标定的实现,通过实例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。
原图
校正后
我创建了一个新的jz文件夹来存放相机校正所需的图片,如下:共12张。
#编码:utf-8
导入cv2
将numpy作为np导入
导入全球
#找到棋盘的角落
#阈值
标准=(cv2。TERM_CRITERIA_EPS cv2ITER,30,0.001)
# Checker模板规格从0开始计算。
w=9
h=6
#世界坐标系中的棋盘格点,如(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 . shape(-1,2)
#存储棋盘角的世界坐标和图像坐标对。
Objpoints=[] #世界坐标系中的3D点
Imgpoints=[] #图像平面上的二维点
# Match读取文件夹中的特定文件
images=glob.glob(jz/*。jpg’)
对于图像:中的fname
img=cv2.imread(fname)
gray=cv2.cvtColor(img,cv2。COLOR_BGR2GRAY)
#找到棋盘的角落
ret,corners=cv2 . findchesboardcorners(灰色,(宽,高),无)
#在图像上显示角落
cv2 . drawchesboardCorners(img,(w,h),corners,ret)
cv2.imshow(findCorners ,img)
cv2.waitKey(500)
cv2.destroyAllWindows()
#如果找到足够多的点对,存储它们
if ret==True:
cv2.cornerSubPix(灰色,角,(11,11),(-1,-1),标准)
objpoints.append(objp)
imgpoints.append(拐角)
#校准
ret,mtx,dist,rvecs,tvecs=cv2 . calibrate camera(obj points,imgpoints,gray.shape[:-1],None,None)
#申请的时候,把下面两条写死。
打印(mtx)
打印(分发)
#失真消除
img2=cv2.imread(77.jpg )
h,w=img2.shape[:2]
Newcameramtx,ROI=cv2 . getoptimalnewcameramatrix(MTX,dist,(w,h),0,(w,h)) #自由缩放参数
dst=cv2.undistort(img2,mtx,dist,None,newcameramtx)
#根据之前的ROI区域裁剪图片
# x,y,w,h=roi
# dst=dst[y:y h,x:x w]
cv2.imwrite(1.jpg ,dst)
cv2.imshow(findCorners ,dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
关于opencv摄像机标定的实现,本文到此结束。关于opencv相机校准的更多信息,请搜索热门IT软件开发工作室以前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。