Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV的有理模型不返回8个失真系数

OpenCV的有理模型不返回8个失真系数
EN

Stack Overflow用户
提问于 2022-08-26 06:30:29
回答 1查看 47关注 0票数 0

我有下面的脚本,以校准从广角镜头相机的图像,但我不能得到所有的8个失真系数,我需要。

它返回一个由8个零组成的数组,当作为参数传递时,当不作为参数传递时,我得到了正常的5个失真系数。

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
import cv2
import glob

chessboard_flags = cv2.CALIB_CB_ADAPTIVE_THRESH + cv2.CALIB_CB_FAST_CHECK + cv2.CALIB_CB_NORMALIZE_IMAGE
subpix_criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.01)
CHESSBOARD_SIZE = (6, 9)
calibration_flags = cv2.CALIB_RATIONAL_MODEL
term_criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6)
obj_p = np.zeros((1, CHESSBOARD_SIZE[0] * CHESSBOARD_SIZE[1], 3), np.float32)
obj_p[0, :, :2] = np.mgrid[0:CHESSBOARD_SIZE[0], 0:CHESSBOARD_SIZE[1]].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.

images = glob.glob(r'Images/*.png')

found = 0
for fname in images:
    img = cv2.imread(fname)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, corners = cv2.findChessboardCorners(gray, CHESSBOARD_SIZE, chessboard_flags)
    if ret:
        objpoints.append(obj_p)
        corners2 = cv2.cornerSubPix(gray, corners, (3, 3), (-1, -1), subpix_criteria)
        imgpoints.append(corners2)
        img = cv2.drawChessboardCorners(img, CHESSBOARD_SIZE, corners2, ret)
        found += 1

print("Number of images used for calibration: ", found)

mtx = np.zeros((3, 3))
dist = np.zeros((8, 1))
rvec = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(found)]
tvec = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(found)]

# calibration
ret, _, _, _, _ = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], mtx, dist, rvec, tvec, calibration_flags,
                                                   term_criteria)

print("K = np.array(" + str(mtx.tolist()) + ")")
print("D = np.array(" + str(dist.tolist()) + ")")
print("RMS = " + str(ret))
EN

回答 1

Stack Overflow用户

发布于 2022-08-26 06:58:17

用以下方法替换calibrateCamera行修复了这个问题。

代码语言:javascript
运行
AI代码解释
复制
ret, mtx, dist, _, _ = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None, flags=calibration_flags,
                                           criteria=term_criteria)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73502608

复制
相关文章
基于模型的率失真优化变换
本文是来自AOMedia Symposium 2019的演讲,讲者是来自USC的Keng-Shih Lu 和 Antonio Ortega。本次演讲主要讲述了基于模型的率失真优化变换,用图像信号处理的角度来看待一些熟悉的概念。
用户1324186
2020/01/14
5270
OpenCV相机标定全过程
第一个参数是输入的棋盘格图像(可以是8位单通道或三通道图像); 第二个参数是棋盘格内部的角点的行列数(注意:不是棋盘格的行列数,如棋盘格的行列数分别为4、8,而内部角点的行列数分别是3、7,因此这里应该指定为cv::Size(3, 7)); 第三个参数是检测到的棋盘格角点,类型为std::vectorcv::Point2f。 第四个参数flag,用于指定在检测棋盘格角点的过程中所应用的一种或多种过滤方法,可以使用下面的一种或多种,如果都是用则使用OR: cv::CALIB_CB_ADAPTIVE_THRESH:使用自适应阈值将图像转化成二值图像 cv::CALIB_CB_NORMALIZE_IMAGE:归一化图像灰度系数(用直方图均衡化或者自适应阈值) cv::CALIB_CB_FILTER_QUADS:在轮廓提取阶段,使用附加条件排除错误的假设 cv::CALIB_CV_FAST_CHECK:快速检测
全栈程序员站长
2022/08/24
2.5K0
OpenCV相机标定全过程
失真函数、失真矩阵与平均失真
: 描述某个信源在某一试验信道传输下的失真大小, 它对信源和信道进行了统计平均, 是从总体上描述整个系统的失真。
timerring
2023/04/12
6220
失真函数、失真矩阵与平均失真
相关性分析返回相关性系数的同时返回p值
可以看到是20个m6a基因,以及 1.5万个lncRNA的表达量矩阵,而且样品数量是500个;
生信技能树
2022/03/03
7850
nc命令卡住不返回的分析
这两天排查解决了一个问题,问题的解决其实很简单,但是整个分析过程还是很有意义的,本文对整个分析过程以及问题如何解决进行总结。
陈猿解码
2023/02/28
2.9K0
nc命令卡住不返回的分析
Vue3返回关闭弹窗不返回页面
完整代码 按钮和弹窗为vant组件,需自行引入 <template> <van-button @click="showPop()">点击弹窗</van-button> <van-popup v-model:show="state.isPop" position="bottom" :style="{ height: '30%' }" @close="addPopState()" /> </template> <script setup> import {
明知山
2022/05/05
3.6K0
Vue3返回关闭弹窗不返回页面
图像缩放不易失真_放大缩小不失真
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说图像缩放不易失真_放大缩小不失真,希望能够帮助大家进步!!!
Java架构师必看
2022/07/12
1.6K0
Vue监听返回键关闭弹出层不返回页面
//监听页面销毁之前 beforeDestroy() { window.removeEventListener( "popstate", () => { if (this.showPop) { this.showPop = false; } else { this.$router.go(-1); } }, false ); }, //使用了keep
明知山
2020/09/02
3.5K0
率失真函数的性质
通常我们总希望信息通过信道传输时输入与输出之间的互信息最大,是在信道给定情况下的要求。而这里是在信源给定而不是信道给定条件下传输。信息率失真理论要解决的问题就是计算满足失真要求的传输所需的最小信道容量或传输速率,以达到降低信道的复杂度和通信成本的目的。
timerring
2023/04/30
5610
率失真函数的性质
Python OpenCV3 计算机视觉秘籍:6~9
变量之间的线性相关性是所有可能选项中最简单的。 从近似和几何任务到数据压缩,相机校准和机器学习,它可以在许多应用中找到。 但是,尽管它很简单,但是当现实世界的影响发挥作用时,事情就会变得复杂。 从传感器收集的所有数据都包含一部分噪声,这可能导致线性方程组具有不稳定的解。 计算机视觉问题通常需要求解线性方程组。 即使在许多 OpenCV 函数中,这些线性方程也是隐藏的。 可以肯定的是,您将在计算机视觉应用中面对它们。 本章中的秘籍将使您熟悉线性代数的方法,这些方法可能有用并且实际上已在计算机视觉中使用。
ApacheCN_飞龙
2023/04/27
2.6K0
Python OpenCV3 计算机视觉秘籍:6~9
opencv下imread函数返回值
openCV的imread()函数和imwrite()函数能支持各种静态图像文件格式。
用户2965768
2018/08/30
3.4K0
opencv下imread函数返回值
HTTP返回码总结,拿走不谢!
100(继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
随心助手
2019/10/15
2.3K0
你还分不清谐波失真、总谐波失真、总谐波失真加噪声吗?
时域上测量系统的输出波形应该与输入波形精确一致,只是幅值放大,时间延迟,这称为不失真测量。
工程师看海
2022/06/23
1.7K0
你还分不清谐波失真、总谐波失真、总谐波失真加噪声吗?
实时视频的镜头失真校正
本文来自Vidovation的网络研讨会,主持人是Vidovation的CTO兼联合创始人Jim Jachetta,演讲者是Alpha Image的首席执行官MC Patel。主要介绍了实时视频的镜头失真校正。
用户1324186
2020/09/23
1.1K0
实时视频的镜头失真校正
GoPro 镜头失真消除
GoPro 使用的鱼眼镜头提供了广阔的视野,但它也会扭曲图像。在这个项目中,我们将通过使用 Python 和 OpenCV 校准相机来消除失真。
云深无际
2021/07/23
1.7K0
GoPro 镜头失真消除
基于python的OpenCV人脸识别模型
import numpy as npimport cv2# 人脸识别分类器faceCascade = cv2.CascadeClassifier(r'haarcascade_frontalface_default.xml')# 识别眼睛的分类器eyeCascade = cv2.CascadeClassifier(r'haarcascade_eye.xml')# 开启摄像头cap = cv2.VideoCapture(0)ok = Truewhile ok: # 读取摄像头中的图像,ok为是否读取成功的
常温阔乐
2022/12/08
6580
基于python的opencv人脸训练模型
import numpy as npfrom PIL import Imageimport osimport cv2# 人脸数据路径path = 'Facedata'recognizer = cv2.face.LBPHFaceRecognizer_create()detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")def getImagesAndLabels(path): imagePaths = [os.pat
常温阔乐
2022/12/08
5250
基于python的OpenCV人脸录入模型
import cv2import os# 调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2cap = cv2.VideoCapture(0)face_detector = cv2.CascadeClassifier(r'haarcascade_frontalface_default.xml')face_id = input('\n enter user id:')# 输入数字0/1/2/3.....来记录图片print('\n Initializing face capture.
常温阔乐
2022/12/08
1.3K1
关系数据模型表示采用_数据库常见的数据模型
关系模型是目前最常用地数据模型之一。关系型数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集,以及实体集之间的联系,其最大特点是描述的一致性。关系模型是由若干个关系模式组成的集合。关系模式可记为R(A1,A2,A3,…,An),其中,R表示关系名,A1,A2,A3,…,An表示属性名。
全栈程序员站长
2022/11/17
4290
关系数据模型表示采用_数据库常见的数据模型
点击加载更多

相似问题

HALCON到OpenCV失真系数的转换

323

在OpenCV中通过findHomography使用失真系数

13

使用opencv摄像机校准时的失真系数

13

OpenCV -对于projectPoints,透镜失真系数是倒置的吗?

10

OpenCV undistortPoints没有给出失真模型的精确逆

212
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档