2013-10-08 6 views
1

Я пытался спасти свою cameramatrix в YML файл, используя резюме :: FileStorage, эта работа тонкая:Использование fileStorage в OpenCV

cv::FileStorage fs("calibration_result.yml",cv::FileStorage::WRITE); 

.............. 

this->fs << "the camera matrix is "<<this->cameraMatrix; 

вот что я получаю:

the camera matrix is : !!opencv-matrix /* why do I get this 
    rows: 
    cols: 3 
    dt: d 
    data: [ 6.9722486929603847e+003, 0., 6.3950000000000000e+002, 0., 
     7.0010247500898549e+003, 5.1150000000000000e+002, 0., 0., 1. ] 

то, что я хочу, чтобы это:

the camera matrix is : 
[ 6.9722486929603847e+003, 0., 6.3950000000000000e+002, 0., 
      7.0010247500898549e+003, 5.1150000000000000e+002, 0., 0., 1. ] 

я уже пытался использовать cameraMatrix.data это не помогло!

любая идея, как я могу это сделать!

благодарит заранее!

+0

Вы получаете то, что вам нужно, с немного дополнительной информацией. Почему это проблема? Можете ли вы объяснить свою проблему более подробно? – guneykayim

+0

кто сказал, что это проблема? Я этого не сделал? Я просто хочу знать, можно ли это сделать! – Engine

ответ

2

камераМатрица должна иметь тип cv::Mat. cv::Mat сохраняется таким образом, как можно видеть в modules/core/src/persistence.cpp (см icvWriteMat) OpenCV не будет в состоянии понять cv::Mat размер без того дополнительные данные (это [...] 3x3 или 1x9 матрица?) И сочинительство обычно используется читать написанное позже. Вы могли бы написать то, что хотите, используя некоторые методы сырого написания (и не сможете прочитать его с помощью opencv) или создать свой собственный сериализуемый тип matrix3x3 или cameraMatrix.

Смежные вопросы