(單/雙目)圖像標定全流程(python/C++/Opencv實現)---代碼篇(2)

一、實例重現

運用opencv samples中的例子直接進行圖像雙目標定,具體參考可參考博客:OpenCV3.2.0 雙目標定+立體匹配
(1)先到OpenCV源碼目錄下(…/opencv-3.4.3/samples/cpp)找到stereo_calib.cpp。
(2)找到標定模板圖像(…/opencv-3.4.3/samples/data)和stereo_calib.xml,直接進行編譯。

g++ `pkg-config --cflags opencv` -o stereo_calib stereo_calib.cpp `pkg-config --libs opencv`
./stereo_calib

(3)結果展示
在這裏插入圖片描述
在這裏插入圖片描述

應用

在這裏插入圖片描述
(1)創建符合要求的xml文件
實例中的xml格式如下,左右相機拍攝的相配圖像交替展示。
在這裏插入圖片描述
應用自己的數據集,生成xml如下所示
在這裏插入圖片描述
具體代碼實現如下:

#encoding:utf-8
'''
根據一個給定的XML Schema,使用DOM樹的形式從空白文件生成一個XML。
'''
import xml.dom.minidom as minidom
import os
# 創建文檔
dom = minidom.getDOMImplementation().createDocument(None,'opencv_storage',None)
# 獲得根節點
root = dom.documentElement
# 創建節點
key = dom.createElement('imagelist')
dir = "/home/crj/calibration/calibration_crj/img_all"
for _, _, files in os.walk(dir):
    files.sort()
    for n, file in enumerate(files):
        if (os.path.splitext(file)[1] == '.jpg') & (n< len(files)/2):
            key_text1 = dom.createTextNode(files[n])
            key.appendChild(key_text1)
            key_text2 = dom.createTextNode(files[n+13])
            key.appendChild(key_text2)

root.appendChild(key)

f = open('stereo_calib.xml','w')
#f.write(doc.toprettyxml(indent = '\t', newl = '\n', encoding = 'utf-8'))
dom.writexml(f,indent = '\t',newl = '\n', addindent = '\t',encoding='utf-8')
f.close()

用自帶的例子顯示效果不好,留待以後研究,蓋個戳,有大佬指導,不勝感激!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章