python校准失真校正错误

问题描述

我正在尝试进行opencv图像校准并纠正失真。它可以正常工作,但不会给我带来意外的结果。

下面的图片是'2.jpg'

enter image description here

import numpy as np
import cv2
import glob
# termination criteria

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER,30,0.001)
# prepare object points,like (0,0),(1,(2,0) ....,(6,5,0)
objp = np.zeros((4*7,3),np.float32)
objp[:,:2] = np.mgrid[0:7,0:4].T.reshape(-1,2)
# Arrays to store object points and image points from all the images.
objpoints = [] # 3d point in real world space
imgpoints = [] # 2d points in image plane.

fname = '2.jpg'
img = cv2.imread(fname)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# Find the chess board corners
ret,corners = cv2.findChessboardCorners(gray,(7,4),None)
# If found,add object points,image points (after refining them)

if ret == True:
    objpoints.append(objp)
    corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
    imgpoints.append(corners2)
    img = cv2.drawChessboardCorners(img,corners2,ret)
    ret,mtx,dist,rvecs,tvecs = cv2.calibrateCamera(objpoints,imgpoints,gray.shape[::-1],None,None)

    img = cv2.imread('2.jpg')

    h,w = img.shape[:2]
    newcameramtx,roi = cv2.getoptimalNewCameraMatrix(mtx,(w,h),1,h))

    mapx,mapy = cv2.initUndistortRectifyMap(mtx,newcameramtx,5)
    dst = cv2.remap(img,mapx,mapy,cv2.INTER_LINEAR)

    # crop the image
    x,y,w,h = roi
    dst = dst[y:y + h,x:x + w]
    cv2.imwrite('calibresult.png',dst)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)