专栏首页用户6037116的专栏镜头的标定与矫正(python)
原创

镜头的标定与矫正(python)

原理:https://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html

标定

import cv2
import numpy as np
import glob

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
w,h = 9,6
objp = np.zeros((w * h, 3), np.float32)
objp[:, :2] = np.mgrid[0:w, 0:h].T.reshape(-1, 2)
obj_points = []
img_points = []
images = glob.glob('标定图片地址')
for fname in images:
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    size = gray.shape[::-1]
    ret, corners = cv2.findChessboardCorners(gray, (w, h), None)
    if ret == True:
        cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria)
        obj_points.append(objp)
        img_points.append(corners)
        cv2.drawChessboardCorners(img, (w, h), corners, ret)
        cv2.imwrite('标定图.png', img)

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(obj_points, img_points, gray.shape[::-1], None, None)
dist = np.delete(dist, [4])     #有剧烈畸变时删除此行,保留K3

标定图

矫正

img2 = cv2.imread('待矫正图')
h, w = img2.shape[:2]
newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w, h), 1, (w, h))
dst = cv2.undistort(img2, mtx, dist, None, newcameramtx)
cv2.imwrite('矫正图.png', dst)

矫正图

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 身份证号码识别(python)

    thugliu
  • OpenCV学习笔记(Python)

    警告: 就算图像的路径是错的, OpenCV 也不会提醒你的,但是当你使用命 令print img时得到的结果是None。

    一点儿也不潇洒
  • opencv 形态学变换(开运算,闭运算,梯度运算)

    形态学里把腐蚀和膨胀单独拿了出来,其他操作(保括膨胀和腐蚀的组合操作)都叫形态学变换。 opencv里有包:cv2.morphologyEx() morph...

    砸漏
  • [图像处理] Python+OpenCV实现车牌区域识别

    这里原理推荐我以前C++图像处理的文章,如下:https://blog.csdn.net/column/details/eastmount-mfc.html

    统计学家
  • 使用OpenCV调用摄像头,显示图片,获取视频并保存

    友情链接:https://blog.csdn.net/u012348774/article/details/78255130

    种花家的奋斗兔
  • OpenCV:目标跟踪。

    下面就通过计算视频帧之间的差异(即考虑背景帧和其他帧之间的差异),进而实现目标跟踪。

    AiTechYun
  • Python OpenCV4趣味应用系列(九)---划痕缺陷检测实例

    比如Canny边缘检测也可以,只是阈值难于调节。当然,实现方法不唯一,大家可以自己尝试一下。

    Color Space
  • 手势识别中一些错误解决方法

    最近在看一个手势识别的项目时,遇到了一些错误,主要原因是该项目是使用python2.7+opencv2.4.8,而我的环境是python3.5.2+opencv...

    py3study
  • OpenCV3计算机视觉——处理文件、摄像头

    randomByteArray=bytearray(os.urandom(120))

    用户7180691
  • Halcon缺陷检测实例转OpenCV实现(三)

    本期文章继续介绍缺陷检测专题的第三个案例,用OpenCV实现Halcon中一个物体凸缺陷检测的实例,前两个案例链接如上↑↑↑。

    Color Space

扫码关注云+社区

领取腾讯云代金券