一、實例重現
運用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()
用自帶的例子顯示效果不好,留待以後研究,蓋個戳,有大佬指導,不勝感激!!!!