本篇部落格主要介紹cv2模組中的攝像頭標定。
攝像頭會發生徑向畸變和切向畸變。
攝像頭的內部引數和外部引數。內部引數是攝像頭特異的,它包括的資訊有x方向和y方向的焦距(fx, fy),光圈中心(cx, cy),相機的內部引數也稱為攝像頭矩陣。
在進行攝像頭標定時至少需要使用10張圖案模式,3d點稱為物件點,2d點稱為影象點,可以使用棋盤或者環形格仔來進行攝像頭標定,使用函式cv2.findcirclegrid()來找圖案。
**示例:
# encoding:utf-8
import numpy as np
import cv2
import glob
# 設定終止條件,迭代30次或移動0.001
criteria = (cv2.term_criteria_eps + cv2.term_criteria_max_iter, 30, 0.001)
# 準備物件點,類似(0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
objp = np.zeros((6 * 7, 3), np.float32)
objp[:, : 2] = np.mgrid[0: 7, 0: 6].t.reshape(-1, 2) # np.mgrid()返回多維結構
# 從所有影象中儲存物件點和影象點的陣列
objpoints = # 真實世界的3d點
imgpoints = # 影象的2d點
# glob.globglob.glob函式的引數是字串。這個字串的書寫和我們使用
# linux的shell命令相似,或者說
攝像頭標定
void calrealpoint std vector obj,int boardwidth,int boardheight,int imgnumber,int squaresize for int imgindex 0 imgindex imgnumber imgindex void camer...
攝像頭標定
void calrealpoint std vector obj,int boardwidth,int boardheight,int imgnumber,int squaresize for int imgindex 0 imgindex imgnumber imgindex void camer...
雙目攝像頭標定
本文選擇使用matlab進行標定。標定過程分3步,接下來分步詳細展開 使用棋盤格生產影象 使用影象在matlab中標定 使用標定係數 第一步 使用棋盤格生產影象 列印棋盤格紙 這一步建議選擇矩形棋盤格,否則容易因為原點不同出現標定偏差,本文版本放在文末了 在目錄下建立兩個資料夾 frameright...