首页 > 其他分享 >使用cv2.getOptimalNewCameraMatrix函数,变为圆形是出现什么错误

使用cv2.getOptimalNewCameraMatrix函数,变为圆形是出现什么错误

时间:2024-01-10 17:22:21浏览次数:27  
标签:getOptimalNewCameraMatrix cv2 畸变 内参 圆形 图像 alpha

cv2.getOptimalNewCameraMatrix 函数用于计算一个新的相机矩阵,以进行图像畸变校正。这个函数的目标是通过考虑畸变的影响,生成一个新的相机矩阵,使得校正后的图像更接近理想的情况。

cv2.getOptimalNewCameraMatrix(cameraMatrix, distCoeffs, imageSize, alpha, newImgSize)

其中参数的含义如下:

  • cameraMatrix: 输入的相机矩阵,包含内参信息。
  • distCoeffs: 输入的畸变系数。
  • imageSize: 输入图像的尺寸,为 (width, height) 的元组。
  • alpha: 控制缩放比例的参数,通常设置为 1。
  • newImgSize: 新图像的尺寸,为 (width, height) 的元组。

函数返回两个值:

  1. 新的相机矩阵 (newCameraMatrix)。
  2. 感兴趣区域 (validPixROI),是一个元组 (x, y, width, height),表示不受畸变影响的图像区域。

但是在使用以下函数时,标定结果为圆形。

new_camera_matrix, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (u, v ), 0.5, (u, v ))
undistorted_image = cv2.undistort(img, mtx, dist, None, new_camera_matrix)

标定结果为

解决方法为

将以上代码中的alpha设置为0,即可。

总结:

1.alpha=0,视场会放大,alpha=1,视场不变
2.进行roi的crop会裁掉一些像素

alpha(因为畸变矫正后有黑边,这个值指示的是保留多少畸变后的像素,选择0,那么就意味着保留最少的黑边,使用1的话,保留全部像素,那么所有黑边都包含进去了)

该函数的返回值返回值:

1. 新的内参
2. 返回的ROI,理解成:因为有黑边,这里可能要剪切黑边,这个ROI就是怎么剪切才能没有黑边。

使用上述API返回的新的内参,矫正图像,使用cv2.undistort进行(1. 原图 numpy.array类型 2. 畸变图像对应的内参 3. 矫正参数 4. None 5. 得到的新的相机内参)。

 

 

标签:getOptimalNewCameraMatrix,cv2,畸变,内参,圆形,图像,alpha
From: https://www.cnblogs.com/heyrroo/p/17956934

相关文章

  • JavaScript圆形转多边形经纬度数组算法及示例
    前言在地理信息系统(GIS)和地图应用中,有时需要将圆形区域表示为多边形的经纬度数组对象。本文将介绍如何使用JavaScript实现圆形转多边形经纬度数组的算法,并提供一个示例来演示其用法。概述圆形转多边形经纬度数组的算法的目标是将给定的圆形区域表示为多边形的经纬度数组对象。这......
  • 【OpenCV】【Python】关于cv2.findContours()轮廓索引(编号)解析(RETR_TREE)
    在打算自己实现二维码的定位的时候,看到了相关博文的关于cv2.findContours返回的层级信息来定位三个“回”字从而达到定位二维码的目的,但是返回的hierarchy中的层级信息分别对应的是哪个轮廓却困扰了许久,查阅了很多资料最后还是自己手动找出了清晰的规律。关于hierarchy返......
  • cv2 像素
    像素是构成数字图像的基本单位。现有一幅显示花朵的图像(如图1所示),提取并放大图1中被蓝色圆环圈住的区域,将得到一幅如图2所示的图像。图1 一幅显示花朵的图像图2 提取并放大图1中被蓝色圆环圈住的区域不难发现,图2所示的图像是由许多个小方块组成的,通常把一个小方块称作......
  • python cv2.imread 读取中文路径的图片返回为None的问题
    使用cv2读取图片时,输出图片形状大小时出现报错“'NoneType'objecthasnoattributeshape”,后来排查发现读取图片的返回值image为None,这就说明图片根本就没有被读取。下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推。 ......
  • css实现:不固定宽高,随内容宽度自动增长的圆形
    css代码:.circle{display:inline-block;border-radius:50%;min-width:20px;min-height:20px;padding:5px;background:red;color:white;text-align:center;line-height:1;box-sizing:co......
  • python的cv2模块使用
    一.安装CV2(opencv)模块pipinstallopencv-python二.使用imread读取图片使用函数cv2.imread(filepath,flags)读入一副图片filepath:要读入图片的完整路径flags:读入图片的标志cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道。alpha通道代表透明度效果,取值......
  • Android项目实战(六十七):自定义圆形进度条
    圆形进度条支持设置:1、圆环背景颜色2、圆管背景宽度3、进度圆环颜色4、进度圆环宽度5、圆环进度6、开始角度7、动画执行时间 自定义类:packagecom.example.mainactivty;importandroid.content.Context;importandroid.content.res.TypedArray;importandroid.......
  • 制作逼真的圆形金属拉丝效果
    1、新建文件,大小1600*1600像素,分辨率72像素/英寸,填充黑色。新建图层,点击“椭圆工具”,按住shift键,在画布中央画一个正圆,填充”选择“渐变”,“渐变形式”选择“角度”。点击渐变条左下方的色标,点击色块,打开“拾色器”,设置颜色为e9edff,按住Alt键向左拖拽复制3个色标,位置分别设......
  • 修改Android原生圆形ProgressBar颜色和环宽
    原生颜色和尺寸:修改颜色和圆环大小;效果:......
  • echarts修改图例legend样式:正方形、矩形、圆形、圆角
    ECharts提供的标记类型有'circle','rect','roundRect','triangle','diamond','pin','arrow','none'legend:{icon:'circle'}参考文章echarts图例修改legend中icon的形状及大小......