opencv - 如何计算未失真图像的分辨率?
问题描述
由于像素的不均匀分布和(通常)黑色边缘的裁剪,未失真图像的分辨率通常低于原始图像。(请参见下面的示例)
所以给定相机校准参数,例如 ROS 格式
image_width: 1600
image_height: 1200
camera_name: camera1
camera_matrix:
rows: 3
cols: 3
data: [1384.355466887268, 0, 849.4355708515795, 0, 1398.17734010913, 604.5570699746268, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [0.0425049914802741, -0.1347528158561486, -0.0002287009852930437, 0.00641133892300999, 0]
rectification_matrix:
rows: 3
cols: 3
data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
rows: 3
cols: 4
data: [1379.868041992188, 0, 860.3000889574832, 0, 0, 1405.926879882812, 604.3997819099422, 0, 0, 0, 1, 0]
如何计算未失真校正图像的最终分辨率?
解决方案
从 Fruchtzwerg 的评论中,下面将给出未失真图像的有效 ROI
import cv2
import numpy as np
mtx = np.array([
[1384.355466887268, 0, 849.4355708515795],
[ 0, 1398.17734010913, 604.5570699746268],
[0, 0, 1]])
dist = np.array([0.0425049914802741, -0.1347528158561486, -0.0002287009852930437, 0.00641133892300999, 0])
cv2.getOptimalNewCameraMatrix(mtx, dist, (1600, 1200), 1)
推荐阅读
- ios - 以编程方式定义的不同行为 NSLayoutConstraints 与带有“greaterThanOrEqual”的情节提要约束
- javascript - Angular NGX Datatable 中的垂直滚动性能缓慢
- python - 数据流:在以前的 beam.combiners 的结果上使用 beam.combiners
- python - 最后在python中try子句的break,continue,return语句之前阻止执行
- sharepoint - 列验证问题
- security - 仅认证后如何更改订阅状态!!在条纹 3d 安全订阅中
- typescript - 按给定键对数组中的对象进行分组
- bash - 检查时间是否在指定的窗口内
- python - 仅更改重复项,而不更改原始项
- javascript - 遍历javascript中的许多数组