ROS python 标定单目相机

最近用到了ROS下面的相机标定方法,写一下笔记记录一下怎么使用.

import cv2
from camera_calibration.calibrator import MonoCalibrator, ChessboardInfo

numImages = 11

#images = [ cv2.imread( '../Images/frame{:04d}.jpg'.format( i ) ) for i in range( numImages ) ]
images = [ cv2.imread( '../Images/info_image/frame{:04d}.jpg'.format( i ) ) for i in range( numImages ) ]

board = ChessboardInfo()
board.n_cols =9
board.n_rows = 6
board.dim = 0.065

mc = MonoCalibrator( [ board ], cv2.CALIB_FIX_K3 )
mc.cal( images )
print( mc.as_message() )

mc.do_save()

mc.do_save()


图片的命名方式为frame0000.jpg.....frame0010.jpg.

运行一下可以得到以下结果.

height: 2048

width: 2448
distortion_model: plumb_bob
D: [-0.3306265102944626, 0.14062637008599313, 0.0015261384523122296, -0.00046863135436407737, 0.0]
K: [1799.4574814875875, 0.0, 1231.8012885682795, 0.0, 1791.9007963251693, 1032.0466541356473, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [1519.59033203125, 0.0, 1231.4801854239195, 0.0, 0.0, 1588.4246826171875, 1037.8012358742126, 0.0, 0.0, 0.0, 1.0, 0.0]

怎么把标定好的结果保存到topic 里面呢?

python change_camera_info.py velodyne_image.bag  test.bag /camera_17023549/pg_17023549/camera_info=calibrationdata_cameracalibrator.yaml
 
velodyne_image.bag 是原始数据包,
test.bag 是新的数据包,yaml里面是这个样子的:



image_width: 2448
image_height: 2048
camera_name: narrow_stereo/left
camera_matrix:
  rows: 3
  cols: 3
  data: [1799.4574814875875, 0.0, 1231.8012885682795, 0.0, 1791.9007963251693, 1032.0466541356473, 0.0, 0.0, 1.0]
distortion_model: plumb_bob
distortion_coefficients:
  rows: 1
  cols: 5
  data: [-0.3306265102944626, 0.14062637008599313, 0.0015261384523122296, -0.00046863135436407737, 0.0]
rectification_matrix:
  rows: 3
  cols: 3
  data: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
projection_matrix:
  rows: 3
  cols: 4
  data: [1519.59033203125, 0.0, 1231.4801854239195, 0.0, 0.0, 1588.4246826171875, 1037.8012358742126, 0.0, 0.0, 0.0, 1.0, 0.0] 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值