python opencv实现相机内参标定

这篇具有很好参考价值的文章主要介绍了python opencv实现相机内参标定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.内容简介

使用python opencv 标定相机内参。

2.实现方案

(1)从网络上下载一张棋盘格图片,粘贴到word文档上,设定尺寸大小为合适值,作为标定板。
opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定
(2)在不同距离,不同角度下用手机相机拍摄棋盘图片。

opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定 opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定
opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定 opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定

(3)调用opencv findChessboardCornerscornerSubPix函数提取棋盘的角点。
opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定
(4)调用opencv calibrateCamera函数标定相机内参。

3 代码实现

import glob

import cv2
import numpy as np
from PIL import Image

# 8行11列棋盘角点
CHECKERBOARD = (8, 11)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)

# 世界坐标中的3D角点,z恒为0
objpoints = []
# 像素坐标中的2D点
imgpoints = []

# 利用棋盘定义世界坐标系中的角点
objp = np.zeros((1, CHECKERBOARD[0] * CHECKERBOARD[1], 3), np.float32)
objp[0, :, :2] = np.mgrid[0:CHECKERBOARD[0], 0:CHECKERBOARD[1]].T.reshape(-1, 2)

# 从文件夹中读取所有图片
images = glob.glob('chessboard_images/*.jpg')
gray = None
for i in range(len(images)):
    fname = images[i]
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 查找棋盘角点
    ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD, cv2.CALIB_CB_ADAPTIVE_THRESH +
                                             cv2.CALIB_CB_FAST_CHECK + cv2.CALIB_CB_NORMALIZE_IMAGE)
    """
    使用cornerSubPix优化探测到的角点
    """
    if ret == True:
        objpoints.append(objp)
        corners2 = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria)
        imgpoints.append(corners2)
        # 显示角点
        img = cv2.drawChessboardCorners(img, CHECKERBOARD, corners2, ret)
        new_img = Image.fromarray(img.astype(np.uint8))
        new_img.save('chessboard_{}.png'.format(i))
        # plt.imshow(img)
        # plt.show()
    # cv2.imshow('img', img)
    # cv2.waitKey(0)

# cv2.destroyAllWindows()
# 标定
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None)
print("重投影误差:\n")
print(ret)
print("内参 : \n")
print(mtx)
print("畸变 : \n")
print(dist)
print("旋转向量 : \n")
print(rvecs)
print("平移向量 : \n")
print(tvecs)

4 标定结果

试验相机标定后得到的相机内参矩阵为
opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定
镜头畸变值为:
opencv python 相机标定程序,计算机视觉,opencv,python,计算机视觉,相机标定文章来源地址https://www.toymoban.com/news/detail-635986.html

到了这里,关于python opencv实现相机内参标定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Opencv 相机内参标定及使用

    目录 一、功能描述 二、标定板制作 三、图像采集 四、标定内参 方法一:Matlab标定  方法二:C++程序标定 五、使用内参 1.本文用于记录通过 Opencv 进行相机内参标定和对内参的使用来进行图像畸变矫正。         1)相机矩阵:包括焦距(fx,fy),光学中心(Cx,Cy),完

    2024年01月24日
    浏览(40)
  • 计算机视觉:OpenCV相机标定

    针孔照相机模型是一种经典的相机模型,它将相机视为一个针孔,将场景中的点投影到成像平面上。在这个模型中,相机的 内参和外参 描述了相机的几何形状和相机的姿态。 相机的 内参矩阵 描述了相机的内部几何形状,包括相机的焦距、像素尺寸和像素坐标原点。相机的

    2024年01月19日
    浏览(67)
  • 相机的内参标定(实现原理+具体操作流程+实验结果)

    这篇主要是总结梳理一下关于学习到的相机内参标定的知识。计划分为原理介绍,具体操作流程,标定实验结果三个模块。 首先先简单解释下为什么要进行相机标定这个操作,我们知道生活中实际使用的相机镜头都是透镜,初中时的物理就讲过,只有通过光心的光线才是沿直

    2024年02月09日
    浏览(59)
  • 【相机标定】相机内参

    相机在计算机视觉方面的一些应用一般需要相机标定。我们总是听到标定这个词,那么具体标定的是什么呢?相机的拍摄是一个三维到二维(透视投影)的过程,这个过程可以用数学模型去表述,标定便是计算这个数学模型中的参数,我们最终希望通过这些参数能够从二维的

    2023年04月10日
    浏览(47)
  • matlab相机标定求得相机内参

    可以去官网下载标定板,然后使用我们的相机进行拍照(10~15张即可): 下载请点击这里:here 在拍摄照片之前,先量取对应的每个方格的长度: 如下: 打开MATLAB的命令行: 输入 cameraCalibrator #调用标定的工具箱 添加的是刚刚我们拍照标定板的图片。 点击运行按钮 参数导出

    2024年02月09日
    浏览(46)
  • 相机内参标定理论篇------相机模型选择

    当拿到一款需要标定内参的相机时,第一个问题就是选择那种的相机模型来标定相机。首先对相机类型进行分类,然后针对相机类型选择相机模型。工程上相机类型的划分并不是十分严格,一般来说根据相机FOV可以把相机大概分为以下几类: 长焦相机:=  标准相机:~; 广角

    2024年02月04日
    浏览(46)
  • 【OpenCv】相机标定介绍及python/c++实现

    之前有一个项目需要公司标内参,之前对这方面没有接触过,网上找了很多资料,记录下相机标定的基础知识。文章是个人浅显理解。如有错误还请指正,非常感谢! 参考链接: 坐标系转换:相机参数标定(camera calibration)及标定结果如何使用_Aoulun的博客-CSDN博客 标定ope

    2024年02月15日
    浏览(40)
  • matlab标定相机内参

    在APP中选择Camera Calibrator,如下: 点击 Add Images,导入拍照图片。标定20张左右就够了,然后角度变一下,但不需要变太大,太大了会影响标定效果。标定板最好在视场中心,且占据较大面积。 修改棋盘格大小为27*27mm(我的A4纸测量是这样) 对于标准相机,菜单栏的option里选

    2024年02月05日
    浏览(50)
  • 【计算机视觉----相机标定】

    相机标定 是计算机视觉中的一个重要问题,它的目的是确定相机的内部参数和外部参数,以建立从相机到图像的映射关系。相机标定的算法通常 分为两个步骤 :第一步是检测棋盘格角点并计算相机的内部参数,第二步是计算相机的外部参数。 第一步:检测棋盘格角点并计算

    2024年02月02日
    浏览(55)
  • 2.4.1.1 相机内参标定

    更多内容,请关注: github:https://github.com/gotonote/Autopilot-Notes.git 相机内参标定主要是为了获取相机本身的性质参数,包括相机的焦距,光心以及畸变参数等。 内参的物理意义与相机模型强相关,常用的相机成像模型为小孔模型,等效焦距与光心用数学可表示为一个矩阵 [ f

    2024年02月22日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包