计算机视觉:OpenCV相机标定

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

计算机视觉:OpenCV相机标定

1.针孔照相机模型:

针孔照相机模型是一种经典的相机模型,它将相机视为一个针孔,将场景中的点投影到成像平面上。在这个模型中,相机的内参和外参描述了相机的几何形状和相机的姿态。

相机的内参矩阵描述了相机的内部几何形状,包括相机的焦距、像素尺寸和像素坐标原点。相机的内参矩阵可以表示为:

K = [ f_x   0    c_x ]
    [  0   f_y   c_y ]
    [  0    0     1  ]

其中,f_x 和 f_y 是相机的水平和垂直焦距,c_x 和 c_y 是相机的像素坐标原点。这个矩阵通常被称为相机的内参矩阵。

相机的外参矩阵描述了相机的姿态,包括相机的位置和方向。相机的外参矩阵通常用旋转矩阵和平移向量来表示,即:

[R | T]

其中,R 是一个 3x3 的旋转矩阵,T 是一个 3x1 的平移向量。这个矩阵通常被称为相机的外参矩阵。

2.相机标定

相机标定是指确定相机的内参矩阵和外参矩阵的过程

在这个过程中,我们需要使用已知的场景和相机拍摄的图像来计算相机的内参矩阵和外参矩阵。

下面是相机标定的一般步骤:

  1. 拍摄多张图像,图像中包含已知的场景(例如棋盘格)。
  2. 提取图像中的特征点,例如角点。
  3. 使用角点来计算相机的内参矩阵和外参矩阵。

Python+OpenCV实现相机标定

准备了下面10张棋盘格图片

opencv相机标定,计算机视觉,计算机视觉,opencv,数码相机

若需要自己准备棋盘格,参考博客:http://t.csdn.cn/EOpir

实现代码:

import numpy as np
import cv2
import glob

# 准备棋盘格的角点坐标
pattern_size = (8, 11)
objpoints = []  # 存储棋盘格角点的世界坐标系
imgpoints = []  # 存储棋盘格角点的图像坐标系

# 生成棋盘格角点的世界坐标系
objp = np.zeros((pattern_size[0] * pattern_size[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2)

# 获取棋盘格图像文件列表
images = glob.glob('ex4/calimg/*.jpg')

for image_path in images:
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


    # cv2.imshow(image_path,gray)
    # cv2.waitKey(0)


    # 检测棋盘格角点
    ret, corners = cv2.findChessboardCorners(gray, pattern_size, None)

    # print(ret)
    # print(corners)
    
    if ret:
        objpoints.append(objp)
        imgpoints.append(corners)

# 进行相机标定
ret, camera_matrix, distortion_coeffs, rvecs, tvecs = cv2.calibrateCamera(
    objpoints, imgpoints, gray.shape[::-1], None, None
)

# 打印相机内参矩阵
print("相机内参矩阵:")
print(camera_matrix)

# 打印相机畸变系数
print("相机畸变系数:")
print(distortion_coeffs)

# 打印相机外参矩阵
print("相机外参矩阵:")
for i in range(len(rvecs)):
    print("第 %d 张图像:" % (i + 1))
    rotation_matrix, _ = cv2.Rodrigues(rvecs[i])
    extrinsic_matrix = np.concatenate((rotation_matrix, tvecs[i]), axis=1)
    print(extrinsic_matrix)



实验结果:

输出的内参外参矩阵以及畸变系数如下:

opencv相机标定,计算机视觉,计算机视觉,opencv,数码相机

实验结果分析:已知有十张棋盘格图像,结果只输出七张图像的对应外参矩阵,其原因是下列三张标定图像:无法被cv2.findChessboardCorners()检测出角点,因此无法求外参矩阵,可以使用质量更好的图像或者更换角点检测算法、调整角点检测算法的参数来解决此问题。

opencv相机标定,计算机视觉,计算机视觉,opencv,数码相机

opencv相机标定,计算机视觉,计算机视觉,opencv,数码相机

opencv相机标定,计算机视觉,计算机视觉,opencv,数码相机文章来源地址https://www.toymoban.com/news/detail-804300.html

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

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

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

相关文章

  • 【Matlab】相机标定(计算机视觉工具箱)

    图像处理和计算机视觉是Matlab的一个主要应用领域,这部分包括4个工具箱——图像处理、计算机视觉、雷达、医学图像。由于视觉的东西容易呈现,所以先从计算机视觉工具箱学起。 官方文档对计算机视觉工具箱的介绍如下:设计和测试计算机视觉、3D 视觉和视频处理系统

    2024年02月05日
    浏览(103)
  • 【OpenCV】OpenCV:计算机视觉的强大工具库

    摘要   OpenCV是一个广泛应用于计算机视觉领域的开源工具库,为开发者提供了丰富的图像处理和计算机视觉算法。本文将介绍OpenCV的功能和应用领域,并探讨它在实践中的重要性和前景。 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,

    2024年02月03日
    浏览(47)
  • 计算机视觉(OpenCV+TensorFlow)

    本系列文章是OpenCV系列文章的第三篇,仍然跟随上篇内容主要聚焦于图像的一些操作 在通常情况下我们使用大小恒定的图像。但在某些情况下,我们需要使用不同分辨率的同幅图像,例如,在搜索图像中的某些内容比如脸部信息时,并不确定该内容在图像中占据的大小。这种

    2024年02月05日
    浏览(51)
  • OpenCV第 1 课 计算机视觉和 OpenCV 介绍

      我们人类可以通过眼睛看到五颜六色的世界,是因为人眼的视觉细胞中存在分别对红、绿、蓝敏感的 3 种细胞。其中的光感色素根据光线的不同进行不同比例的分解,从而让我们识别到各种颜色。   对人工智能而言,学会“ 看 ”也是非常关键的一步。那么机器人是如

    2024年01月24日
    浏览(50)
  • 【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头

    Droidcam 是一款可以将手机变成网络摄像头的工具,我们可以利用 Droidcam 让 OpenCV 拥有调用手机摄像头的能力。 2.1 安装 DroidCam 在手机和电脑上分别安装 DroidCam 的客户端和服务端 下载地址:https://pan.baidu.com/s/1DrBn3P1Bx-SXa4d6oziifA?pwd=gr1o 提取码:gr1o 2.2 测试连接状态 手机和电脑需

    2024年02月09日
    浏览(52)
  • 【计算机视觉】---OpenCV实现物体追踪

    OpenCV中的物体追踪算法基于视觉目标跟踪的原理。物体追踪的目标是在连续的图像序列中定位和跟踪特定物体的位置。 在物体追踪中,我们需要对目标对象进行表示。通常使用边界框(bounding box)来表示目标的位置和大小。边界框是一个矩形区域,由左上角的坐标(x,y)和

    2024年02月08日
    浏览(51)
  • 【opencv】计算机视觉:实时目标追踪

    目录 前言 解析 深入探究 前言 目标追踪技术对于民生、社会的发展以及国家军事能力的壮大都具有重要的意义。它不仅仅可以应用到体育赛事当中目标的捕捉,还可以应用到交通上,比如实时监测车辆是否超速等!对于国家的军事也具有一定的意义,比如说导弹识别目标等

    2024年02月05日
    浏览(53)
  • 开源计算机视觉库OpenCV详解

    目录 1、概述 2、OpenCV详细介绍 2.1、OpenCV的起源 2.2、OpenCV开发语言 2.3、OpenCV的应用领域 3、OpenCV模块划分 4、OpenCV源码文件结构 4.1、根目录介绍 4.2、常用模块介绍 4.3、CUDA加速模块 5、OpenCV配置以及Visual Studio使用OpenCV 6、关于Lena图片 7、OpenCV和OpenGL的区别 8、OpenCV与YOLO的区别

    2024年02月10日
    浏览(79)
  • 【opencv】计算机视觉基础知识

    目录 前言 1、什么是计算机视觉 2、图片处理基础操作 2.1 图片处理:读入图像 2.2 图片处理:显示图像 2.3 图片处理:图像保存 3、图像处理入门基础 3.1 图像成像原理介绍 3.2 图像分类 3.2.1 二值图像 3.2.2灰度图像 3.2.3彩色图像(RGB) 4、像素处理操作 4.1 读取像素 4.2 修改像素

    2024年02月04日
    浏览(66)
  • 【计算机视觉】基于OpenCV计算机视觉的摄像头测距技术设计与实现

    在当今技术日益进步的时代,计算机视觉已成为我们生活中不可或缺的一部分。从智能监控到虚拟现实,计算机视觉技术的应用范围日益广泛。在这篇博客中,我们将探索一个特别实用的计算机视觉案例:使用OpenCV实现摄像头测距。这一技术不仅对专业人士有用,也为编程爱

    2024年02月04日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包