中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

大氣的企業(yè)網(wǎng)站模板視頻推廣

大氣的企業(yè)網(wǎng)站模板,視頻推廣,網(wǎng)站在線客服代碼,合肥到黃山旅游攻略一、四大坐標(biāo)系介紹 1,世界坐標(biāo)系 從這個(gè)世界(world)的視角來看物體 世界坐標(biāo)系是3D空間坐標(biāo),每個(gè)點(diǎn)的位置用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw?,Yw?,Zw?)表示 2,相機(jī)坐標(biāo)系 相機(jī)本身具有一個(gè)坐標(biāo)系&…

一、四大坐標(biāo)系介紹

1,世界坐標(biāo)系

從這個(gè)世界(world)的視角來看物體
世界坐標(biāo)系是3D空間坐標(biāo),每個(gè)點(diǎn)的位置用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw?,Yw?,Zw?)表示

2,相機(jī)坐標(biāo)系

相機(jī)本身具有一個(gè)坐標(biāo)系,其也是3D空間坐標(biāo)
從相機(jī)(camera)的視角來看物體,每個(gè)點(diǎn)的位置用 ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc?,Yc?,Zc?)表示

3,圖像坐標(biāo)系

相機(jī)坐標(biāo)系是3D空間的,而我們通過相機(jī)拍照得到的照片卻是2D平面,這之間涉及到了透視投影(perspective projection),大白話就是相似三角形,將3D空間上的點(diǎn)映射到2D平面上
圖像坐標(biāo)系是實(shí)際的物理坐標(biāo)系 ( x , y ) (x,y) (x,y),其原點(diǎn)位置一般在相機(jī)光軸成像與成像平面的交點(diǎn)位置,通常為成像平面的中心點(diǎn),物理單位為mm

4,像素坐標(biāo)系

我們?cè)谔幚韴D像數(shù)據(jù)的時(shí)候,使用的是像素坐標(biāo)系 ( u , v ) (u,v) (u,v),比如這個(gè)圖像的大小為1080*720,即長(zhǎng)和寬為1080和780個(gè)像素;分辨率等相關(guān)概念也是這個(gè)大概意思,單位是像素pixel
每個(gè)像素都有對(duì)應(yīng)的實(shí)際物理尺寸,比如1像素=0.5mm
像素有些情況是矩形,分為x和y方向的長(zhǎng)度

5,總結(jié)

我們需要通過一些手段,將原本在世界坐標(biāo)系下的點(diǎn)轉(zhuǎn)換到像素坐標(biāo)系下
世界坐標(biāo)系是因?yàn)槲矬w本身真實(shí)存在的位置,而轉(zhuǎn)到像素坐標(biāo)系下是因?yàn)槲覀冊(cè)谶M(jìn)行圖像處理的時(shí)候針對(duì)的是像素
故,相機(jī)標(biāo)定的最終目的是實(shí)現(xiàn)世界坐標(biāo)系和像素坐標(biāo)系之間的轉(zhuǎn)換

二、四大坐標(biāo)系轉(zhuǎn)換

1,世界坐標(biāo)系——相機(jī)坐標(biāo)系

相機(jī)坐標(biāo)系和世界坐標(biāo)系都是3D空間坐標(biāo)系,任何一個(gè)空間中的點(diǎn),都可以通過旋轉(zhuǎn)平移進(jìn)行相互轉(zhuǎn)換

假設(shè)世界坐標(biāo)系下有個(gè)點(diǎn) P w ( X w , Y w , Z w ) P_w(X_w,Y_w,Z_w) Pw?(Xw?,Yw?,Zw?),通過乘以一個(gè)變換矩陣(旋轉(zhuǎn)R+平移T)就可以得到相機(jī)坐標(biāo)系下的對(duì)應(yīng)位置 P c ( X c , Y c , Z c ) P_c(X_c,Y_c,Z_c) Pc?(Xc?,Yc?,Zc?)

[ X c Y c Z c ] = [ R 11 R 12 R 13 R 21 R 22 R 23 R 31 R 32 R 33 ] [ X w Y w Z w ] + [ T 1 T 2 T 3 ] \begin{bmatrix} X_c\\ Y_c\\ Z_c \end{bmatrix}= \begin{bmatrix} R_{11}&R_{12}&R_{13}\\ R_{21}&R_{22}&R_{23}\\ R_{31}&R_{32}&R_{33} \end{bmatrix} \begin{bmatrix} X_w\\ Y_w\\ Z_w \end{bmatrix}+ \begin{bmatrix} T_1\\ T_2\\ T_3 \end{bmatrix} ?Xc?Yc?Zc?? ?= ?R11?R21?R31??R12?R22?R32??R13?R23?R33?? ? ?Xw?Yw?Zw?? ?+ ?T1?T2?T3?? ?

為了后續(xù)的計(jì)算方便,轉(zhuǎn)換為齊次坐標(biāo)系進(jìn)行表示
[ X c Y c Z c 1 ] = [ R 11 R 12 R 13 T 1 R 21 R 22 R 23 T 2 R 31 R 32 R 33 T 3 0 0 0 1 ] [ X w Y w Z w 1 ] \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1 \end{bmatrix}= \begin{bmatrix} R_{11}&R_{12}&R_{13}&T_1\\ R_{21}&R_{22}&R_{23}&T_2\\ R_{31}&R_{32}&R_{33}&T_3\\ 0&0&0&1 \end{bmatrix} \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ 1 \end{bmatrix} ?Xc?Yc?Zc?1? ?= ?R11?R21?R31?0?R12?R22?R32?0?R13?R23?R33?0?T1?T2?T3?1? ? ?Xw?Yw?Zw?1? ?

其中這個(gè)變換矩陣(旋轉(zhuǎn)R和平移T)稱為相機(jī)外參
[ R 11 R 12 R 13 T 1 R 21 R 22 R 23 T 2 R 31 R 32 R 33 T 3 0 0 0 1 ] \begin{bmatrix} R_{11}&R_{12}&R_{13}&T_1\\ R_{21}&R_{22}&R_{23}&T_2\\ R_{31}&R_{32}&R_{33}&T_3\\ 0&0&0&1 \end{bmatrix} ?R11?R21?R31?0?R12?R22?R32?0?R13?R23?R33?0?T1?T2?T3?1? ?

相機(jī)外參實(shí)現(xiàn)了某點(diǎn)所在的世界坐標(biāo)系相機(jī)坐標(biāo)系之間的轉(zhuǎn)換

2,相機(jī)坐標(biāo)系——圖像坐標(biāo)系

就此我們實(shí)現(xiàn)了世界坐標(biāo)系下點(diǎn) P w ( X w , Y w , Z w ) P_w(X_w,Y_w,Z_w) Pw?(Xw?,Yw?,Zw?)到其所對(duì)應(yīng)的相機(jī)的坐標(biāo)系下位置 P c ( X c , Y c , Z c ) P_c(X_c,Y_c,Z_c) Pc?(Xc?,Yc?,Zc?)之間的轉(zhuǎn)換

相機(jī)坐標(biāo)系是3D空間坐標(biāo)系,而相機(jī)拍出來的圖片是2D平面,這之間涉及透視投影(perspective projection),大白話為相似三角形
在這里插入圖片描述
我們可以看到 X c , Y c , Z c , O c X_c,Y_c,Z_c,O_c Xc?,Yc?,Zc?,Oc?這個(gè)坐標(biāo)系為相機(jī)坐標(biāo)系,淡藍(lán)色的平面 x , y , o x,y,o x,y,o為圖像坐標(biāo)系(成像平面)
相機(jī)成像的原理是小孔成像,故相機(jī)坐標(biāo)系和圖像坐標(biāo)系的y軸是相反的
相機(jī)坐標(biāo)系的原點(diǎn) O c O_c Oc?與圖像坐標(biāo)系的原點(diǎn) o o o之間的距離為焦距 f f f這里假設(shè)相機(jī)坐標(biāo)系和圖像坐標(biāo)系的軸是相互平行且放置位置為正中心,但也有不平行情況,就需要考慮角度了

相機(jī)坐標(biāo)系下的點(diǎn) P c ( X c , Y c , Z c ) P_c(X_c,Y_c,Z_c) Pc?(Xc?,Yc?,Zc?)與相機(jī)坐標(biāo)系原點(diǎn) O c O_c Oc?的連線過圖像坐標(biāo)系平面上的點(diǎn) p ( x , y ) p(x,y) p(x,y)
也就是相機(jī)坐標(biāo)系下的點(diǎn) P c ( X c , Y c , Z c ) P_c(X_c,Y_c,Z_c) Pc?(Xc?,Yc?,Zc?)對(duì)應(yīng)的圖像坐標(biāo)系下的位置為 p ( x , y ) p(x,y) p(x,y)
根據(jù)相似三角形可知:
{ x f = X c Z c y f = Y c Z c ? { Z c ? x = f ? X c Z c ? y = f ? Y c \begin{cases} \frac{x}{f} = \frac{X_c}{Z_c}\\ \frac{y}{f} = \frac{Y_c}{Z_c} \end{cases} \Rightarrow \begin{cases} Z_c·x = f·X_c\\ Z_c·y = f·Y_c \end{cases} {fx?=Zc?Xc??fy?=Zc?Yc????{Zc??x=f?Xc?Zc??y=f?Yc??

轉(zhuǎn)化為矩陣形式
Z c [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X c Y c Z c 1 ] Z_c \begin{bmatrix} x\\y\\1\end{bmatrix} =\begin{bmatrix} f&0&0&0\\ 0&f&0&0\\ 0&0&1&0 \end{bmatrix} \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1 \end{bmatrix} Zc? ?xy1? ?= ?f00?0f0?001?000? ? ?Xc?Yc?Zc?1? ?
其中 Z c Z_c Zc?為點(diǎn)所在相機(jī)坐標(biāo)系下的Z軸方向位置,是個(gè)常量,又稱為比例因子
f f f為相機(jī)的焦距

通過該矩陣就可以實(shí)現(xiàn)相機(jī)坐標(biāo)系圖像坐標(biāo)系之間的轉(zhuǎn)換

3,圖像坐標(biāo)系——像素坐標(biāo)系

圖像坐標(biāo)系是物理坐標(biāo)系,因?yàn)樗婕暗骄唧w的尺寸大小,每個(gè)像素都有其對(duì)應(yīng)的物理尺寸
一般情況下像素是矩形,通常情況下假設(shè) 1 p i x e l = d x m m , 1 p i x e l = d y m m 1 pixel = dx mm,1 pixel = dy mm 1pixel=dxmm1pixel=dymm,其中 d x dx dx d y dy dy表示一個(gè)像素的長(zhǎng)寬分別為多少mm

在這里插入圖片描述

已知有個(gè)小藍(lán)點(diǎn)在圖像坐標(biāo)系下的位置為 ( x , y ) (x,y) (x,y),圖像坐標(biāo)系原點(diǎn)所在像素坐標(biāo)系下的位置為 ( u 0 , v 0 ) (u_0,v_0) (u0?,v0?)
求解:小藍(lán)點(diǎn)所對(duì)應(yīng)的像素坐標(biāo)系為多少?

假設(shè):1個(gè)像素的長(zhǎng)和寬分別為 d x dx dx d y dy dy mm,圖像坐標(biāo)系下1mm對(duì)應(yīng)像素坐標(biāo)系下為 1 d x \frac{1}{dx} dx1?個(gè)像素
小藍(lán)點(diǎn)在圖像坐標(biāo)系下 ( x , y ) (x,y) (x,y)應(yīng)像素坐標(biāo)為 ( x ? 1 d x , y ? 1 d y ) (x * \frac{1}{dx} , y * \frac{1}{dy}) (x?dx1?,y?dy1?),即 ( x d x , y d y ) (\frac{x}{dx},\frac{y}{dy}) (dxx?,dyy?)

u = x d x + u 0 v = y d y + v 0 u = \frac{x}{dx} + u_0\\ v = \frac{y}{dy} + v_0 u=dxx?+u0?v=dyy?+v0?

整理成矩陣形式:
[ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] \begin{bmatrix} u\\ v\\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{dx}&0&u_0\\ 0&\frac{1}{dy}&v_0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ?uv1? ?= ?dx1?00?0dy1?0?u0?v0?1? ? ?xy1? ?

也可以寫成另一種形式

[ x y 1 ] = [ d x 0 ? u 0 d x 0 d y ? v 0 d y 0 0 1 ] [ u v 1 ] \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} = \begin{bmatrix} dx&0&-u_0dx\\ 0&dy&-v_0dy\\ 0&0&1 \end{bmatrix} \begin{bmatrix} u\\ v\\ 1 \end{bmatrix} ?xy1? ?= ?dx00?0dy0??u0?dx?v0?dy1? ? ?uv1? ?

由此可以得到一個(gè)矩陣,實(shí)現(xiàn)該點(diǎn)在圖像坐標(biāo)系 ( x , y ) (x,y) (x,y)和像素坐標(biāo)系 ( u , v ) (u,v) (u,v)下的直接轉(zhuǎn)換

4,各個(gè)坐標(biāo)系轉(zhuǎn)換相互推導(dǎo)結(jié)合

我們的最終目的是:世界坐標(biāo)系轉(zhuǎn)換到像素坐標(biāo)系

若已知世界坐標(biāo)系下點(diǎn)的坐標(biāo)為 P w ( X w , Y w , Z w ) P_w(X_w,Y_w,Z_w) Pw?(Xw?,Yw?,Zw?)

將世界坐標(biāo)系 P w ( X w , Y w , Z w ) P_w(X_w,Y_w,Z_w) Pw?(Xw?,Yw?,Zw?)轉(zhuǎn)換為相機(jī)坐標(biāo)系 P c ( X c , Y c , Z c ) P_c(X_c,Y_c,Z_c) Pc?(Xc?,Yc?,Zc?)
[ X c Y c Z c 1 ] = [ R 11 R 12 R 13 T 1 R 21 R 22 R 23 T 2 R 31 R 32 R 33 T 3 0 0 0 1 ] [ X w Y w Z w 1 ] \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1 \end{bmatrix}= \begin{bmatrix} R_{11}&R_{12}&R_{13}&T_1\\ R_{21}&R_{22}&R_{23}&T_2\\ R_{31}&R_{32}&R_{33}&T_3\\ 0&0&0&1 \end{bmatrix} \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ 1 \end{bmatrix} ?Xc?Yc?Zc?1? ?= ?R11?R21?R31?0?R12?R22?R32?0?R13?R23?R33?0?T1?T2?T3?1? ? ?Xw?Yw?Zw?1? ?

將相機(jī)坐標(biāo)系 P c ( X c , Y c , Z c ) P_c(X_c,Y_c,Z_c) Pc?(Xc?,Yc?,Zc?)轉(zhuǎn)化為圖像坐標(biāo)系 p ( x , y ) p(x,y) p(x,y)

Z c [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X c Y c Z c 1 ] Z_c \begin{bmatrix} x\\y\\1\end{bmatrix} =\begin{bmatrix} f&0&0&0\\ 0&f&0&0\\ 0&0&1&0 \end{bmatrix} \begin{bmatrix} X_c\\ Y_c\\ Z_c\\ 1 \end{bmatrix} Zc? ?xy1? ?= ?f00?0f0?001?000? ? ?Xc?Yc?Zc?1? ?

將圖像坐標(biāo)系 ( x , y ) (x,y) (x,y)轉(zhuǎn)化為像素坐標(biāo)系 ( u , v ) (u,v) (u,v),這里的 ( u 0 , v 0 ) (u_0,v_0) (u0?,v0?)圖像坐標(biāo)系的原點(diǎn)所對(duì)應(yīng)的像素坐標(biāo)系下的位置
[ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] \begin{bmatrix} u\\ v\\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{dx}&0&u_0\\ 0&\frac{1}{dy}&v_0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} ?uv1? ?= ?dx1?00?0dy1?0?u0?v0?1? ? ?xy1? ?

最終進(jìn)行前后整理可得:
Z c [ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ R 11 R 12 R 13 T 1 R 21 R 22 R 23 T 2 R 31 R 32 R 33 T 3 0 0 0 1 ] [ X w Y w Z w 1 ] Z_c \begin{bmatrix} u\\ v\\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{dx}&0&u_0\\ 0&\frac{1}{dy}&v_0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} f&0&0&0\\ 0&f&0&0\\ 0&0&1&0 \end{bmatrix} \begin{bmatrix} R_{11}&R_{12}&R_{13}&T_1\\ R_{21}&R_{22}&R_{23}&T_2\\ R_{31}&R_{32}&R_{33}&T_3\\ 0&0&0&1 \end{bmatrix} \begin{bmatrix} X_w\\ Y_w\\ Z_w\\ 1 \end{bmatrix} Zc? ?uv1? ?= ?dx1?00?0dy1?0?u0?v0?1? ? ?f00?0f0?001?000? ? ?R11?R21?R31?0?R12?R22?R32?0?R13?R23?R33?0?T1?T2?T3?1? ? ?Xw?Yw?Zw?1? ?

其中 Z c Z_c Zc?表示該點(diǎn)在相機(jī)坐標(biāo)系下的Z軸方向的位置,又稱為比例因子,本質(zhì)是常量

相機(jī)內(nèi)參為:
[ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ f 0 0 0 0 f 0 0 0 0 1 0 ] \begin{bmatrix} \frac{1}{dx}&0&u_0\\ 0&\frac{1}{dy}&v_0\\ 0&0&1 \end{bmatrix} \begin{bmatrix} f&0&0&0\\ 0&f&0&0\\ 0&0&1&0 \end{bmatrix} ?dx1?00?0dy1?0?u0?v0?1? ? ?f00?0f0?001?000? ?

相機(jī)外參為:
[ R 11 R 12 R 13 T 1 R 21 R 22 R 23 T 2 R 31 R 32 R 33 T 3 0 0 0 1 ] \begin{bmatrix} R_{11}&R_{12}&R_{13}&T_1\\ R_{21}&R_{22}&R_{23}&T_2\\ R_{31}&R_{32}&R_{33}&T_3\\ 0&0&0&1 \end{bmatrix} ?R11?R21?R31?0?R12?R22?R32?0?R13?R23?R33?0?T1?T2?T3?1? ?

就此我們實(shí)現(xiàn)了世界坐標(biāo)系和像素坐標(biāo)系的轉(zhuǎn)換,這就是相機(jī)標(biāo)定的意義所在

5,總結(jié)

理想狀態(tài)下的相機(jī)標(biāo)定,其本質(zhì)是求解相機(jī)的內(nèi)外參數(shù)矩陣

相機(jī)外參矩陣需要求解旋轉(zhuǎn)和平移共6個(gè)參數(shù)
相機(jī)內(nèi)參菊展需要求解焦距 f f f、圖像坐標(biāo)系原點(diǎn)所在的像素坐標(biāo)系的坐標(biāo) ( u 0 , v 0 ) (u_0,v_0) (u0?,v0?)也稱為像主點(diǎn)坐標(biāo)、單個(gè)像素點(diǎn)的長(zhǎng)和寬 d x dx dx d y dy dy mm,共5個(gè)參數(shù)

相機(jī)內(nèi)外參數(shù)矩陣需要求解11個(gè)參數(shù),這是不考慮畸變的理想狀況,但實(shí)際相機(jī)都不可避免存在畸變,故還需要求解畸變系數(shù)

三、畸變

相機(jī)標(biāo)定的最終目的是拿到相機(jī)的內(nèi)外參數(shù)矩陣,這些內(nèi)外參數(shù)針對(duì)同一個(gè)相機(jī)是固定的,只需要標(biāo)定一次即可
相機(jī)硬件本身多多少少不可避免存在一定的誤差,故需要求解畸變系數(shù)用于相機(jī)的校準(zhǔn),然后再進(jìn)行求解內(nèi)外參矩陣

畸變主要包括(影響最大):切向畸變徑向畸變,是相機(jī)本身無法避免的誤差

1,切向畸變

切向畸變產(chǎn)生于相機(jī)組裝過程中,透鏡本身與相機(jī)傳感器成像平面不平行
在這里插入圖片描述

2,徑向畸變

徑向畸變產(chǎn)生于透鏡本身的形狀,光線在遠(yuǎn)離透鏡中心的地方比靠近中心的地方更加彎曲

徑向畸變主要包括:桶形畸變枕形畸變
在這里插入圖片描述

切向畸變和徑向畸變有對(duì)應(yīng)的模型公式,網(wǎng)上一大堆教程,需要的小伙伴自行學(xué)習(xí)推導(dǎo)哈

畸變涉及到五個(gè)參數(shù):徑向畸變參數(shù) k 1 、 k 2 、 k 3 k_1、k_2、k_3 k1?、k2?、k3?;切向畸變參數(shù) p 1 、 p 2 p_1、p_2 p1?、p2?

四、OpenCV代碼實(shí)戰(zhàn)

求解方法很多,這里以張正友標(biāo)定法(也稱為棋盤格標(biāo)定法)為例進(jìn)行演示

1,準(zhǔn)備棋盤格數(shù)據(jù)

①OpenCV自帶幾張棋盤格圖片,大致路徑為:opencv\sources\samples\data,當(dāng)然也可以自己去拍幾張棋盤格
把這幾張圖片放到VS項(xiàng)目中
在這里插入圖片描述
在這里插入圖片描述
②新建一個(gè)項(xiàng)目,需要用到OpenCV
③跑一下代碼即可

2,完整代碼

修改地方:
①棋盤格角點(diǎn)行列數(shù):int CHECKERBOARD[2]{ 6,9 };
在這里插入圖片描述

②圖片所在文件夾路徑:std::string path = "./image/*.jpg";

#include <opencv2/opencv.hpp>
#include <stdio.h>
#include <iostream>using namespace std;
using namespace cv;// Defining the dimensions of checkerboard
// 定義棋盤格的尺寸
int CHECKERBOARD[2]{ 6,9 }; // 一行有6個(gè),一共有9行     數(shù)點(diǎn)的行列---6行9列int main()
{// Creating vector to store vectors of 3D points for each checkerboard image// 創(chuàng)建矢量以存儲(chǔ)每個(gè)棋盤圖像的三維點(diǎn)矢量std::vector<std::vector<cv::Point3f> > objpoints;// Creating vector to store vectors of 2D points for each checkerboard image// 創(chuàng)建矢量以存儲(chǔ)每個(gè)棋盤圖像的二維點(diǎn)矢量std::vector<std::vector<cv::Point2f> > imgpoints;// Defining the world coordinates for 3D points// 為三維點(diǎn)定義世界坐標(biāo)系std::vector<cv::Point3f> objp;for (int i{ 0 }; i < CHECKERBOARD[1]; i++){for (int j{ 0 }; j < CHECKERBOARD[0]; j++){objp.push_back(cv::Point3f(j, i, 0));}}// Extracting path of individual image stored in a given directory// 提取存儲(chǔ)在給定目錄中的單個(gè)圖像的路徑std::vector<cv::String> images;// Path of the folder containing checkerboard images// 包含棋盤圖像的文件夾的路徑std::string path = "./image/*.jpg";// 使用glob函數(shù)讀取所有圖像的路徑cv::glob(path, images);cv::Mat frame, gray;// vector to store the pixel coordinates of detected checker board corners// 存儲(chǔ)檢測(cè)到的棋盤轉(zhuǎn)角像素坐標(biāo)的矢量std::vector<cv::Point2f> corner_pts;bool success;// Looping over all the images in the directory// 循環(huán)讀取圖像for (int i{ 0 }; i < images.size(); i++){frame = cv::imread(images[i]);if (frame.empty()){continue;}if (i == 40){int b = 1;}cout << "the current image is " << i << "th" << endl;cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY);// Finding checker board corners// 尋找角點(diǎn)// If desired number of corners are found in the image then success = true// 如果在圖像中找到所需數(shù)量的角,則success = true// opencv4以下版本,flag參數(shù)為CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FAST_CHECK | CV_CALIB_CB_NORMALIZE_IMAGEsuccess = cv::findChessboardCorners(gray, cv::Size(CHECKERBOARD[0], CHECKERBOARD[1]), corner_pts, CALIB_CB_ADAPTIVE_THRESH | CALIB_CB_FAST_CHECK | CALIB_CB_NORMALIZE_IMAGE);/** If desired number of corner are detected,* we refine the pixel coordinates and display* them on the images of checker board*/// 如果檢測(cè)到所需數(shù)量的角點(diǎn),我們將細(xì)化像素坐標(biāo)并將其顯示在棋盤圖像上if (success){// 如果是OpenCV4以下版本,第一個(gè)參數(shù)為CV_TERMCRIT_EPS | CV_TERMCRIT_ITERcv::TermCriteria criteria(TermCriteria::EPS | TermCriteria::Type::MAX_ITER, 30, 0.001);// refining pixel coordinates for given 2d points.// 為給定的二維點(diǎn)細(xì)化像素坐標(biāo)cv::cornerSubPix(gray, corner_pts, cv::Size(11, 11), cv::Size(-1, -1), criteria);// Displaying the detected corner points on the checker board// 在棋盤上顯示檢測(cè)到的角點(diǎn)cv::drawChessboardCorners(frame, cv::Size(CHECKERBOARD[0], CHECKERBOARD[1]), corner_pts, success);objpoints.push_back(objp);imgpoints.push_back(corner_pts);}cv::imshow("Image", frame);cv::waitKey(0);}cv::destroyAllWindows();cv::Mat cameraMatrix, distCoeffs, R, T;/** Performing camera calibration by* passing the value of known 3D points (objpoints)* and corresponding pixel coordinates of the* detected corners (imgpoints)*/// 通過傳遞已知3D點(diǎn)(objpoints)的值和檢測(cè)到的角點(diǎn)(imgpoints)的相應(yīng)像素坐標(biāo)來執(zhí)行相機(jī)校準(zhǔn)cv::calibrateCamera(objpoints, imgpoints, cv::Size(gray.rows, gray.cols), cameraMatrix, distCoeffs, R, T);// 內(nèi)參矩陣std::cout << "cameraMatrix : " << std::endl;std::cout << cameraMatrix << std::endl;// 透鏡畸變系數(shù)std::cout << "distCoeffs : " << std::endl;std::cout << distCoeffs << std::endl;// rvecsstd::cout << "Rotation vector : " << std::endl;std::cout << R << std::endl;// tvecsstd::cout << "Translation vector : " << std::endl;std::cout << T << std::endl;return 0;
}

3,運(yùn)行效果

在這里插入圖片描述
在這里插入圖片描述
求解得到內(nèi)參矩陣、透鏡畸變系數(shù)、旋轉(zhuǎn)和平移向量

http://www.risenshineclean.com/news/1001.html

相關(guān)文章:

  • 怎么用dw做地圖網(wǎng)站百度推廣需要什么條件
  • 做網(wǎng)站 除了域名怎么聯(lián)系百度客服
  • 住建培訓(xùn)網(wǎng)站線上宣傳有哪些好的方式方法
  • 如何做網(wǎng)站商城2345網(wǎng)址導(dǎo)航安裝
  • 新網(wǎng)頁(yè)游戲開服表seo推廣軟件下載
  • 賺錢網(wǎng)站怎么做的河北百度seo關(guān)鍵詞
  • 做網(wǎng)站背景步驟百度應(yīng)用
  • 阜陽(yáng)營(yíng)銷型網(wǎng)站建設(shè)做網(wǎng)站推廣一般多少錢
  • 常州做網(wǎng)站麥策電商戶外廣告
  • 網(wǎng)站信息內(nèi)容建設(shè) 宣傳部門游戲優(yōu)化大師
  • 網(wǎng)站開發(fā)高級(jí)工程師專業(yè)怎樣申請(qǐng)網(wǎng)站注冊(cè)
  • 新聞網(wǎng)站建設(shè)評(píng)比規(guī)則2023重大新聞事件10條
  • 網(wǎng)站圖片上的水印怎么做網(wǎng)絡(luò)營(yíng)銷專業(yè)就業(yè)公司
  • seo擦邊球網(wǎng)站什么廣告推廣最有效果
  • dw用層還是表格做網(wǎng)站快色盲圖
  • 做外貿(mào)哪些網(wǎng)站可以發(fā)免費(fèi)信息大批量刷關(guān)鍵詞排名軟件
  • 海外永久網(wǎng)站百度一下你就知道移動(dòng)官網(wǎng)
  • 論壇網(wǎng)站開發(fā)外包公司什么意思
  • 網(wǎng)頁(yè)游戲人生重開模擬器如何把一個(gè)關(guān)鍵詞優(yōu)化到首頁(yè)
  • 網(wǎng)站滾動(dòng)效果怎么做站長(zhǎng)工具怎么關(guān)掉
  • 淘寶開放平臺(tái)怎么做淘寶客網(wǎng)站網(wǎng)絡(luò)推廣費(fèi)用一般多少
  • 杭州網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)安卓?jī)?yōu)化大師app下載安裝
  • 運(yùn)城網(wǎng)站建設(shè)公司有多少錢愛站網(wǎng)seo
  • 邢臺(tái)網(wǎng)站建設(shè)要多少錢揚(yáng)州百度關(guān)鍵詞優(yōu)化
  • 境外網(wǎng)站開發(fā)北京it培訓(xùn)機(jī)構(gòu)哪家好
  • 做視頻能賺錢的網(wǎng)站seoheuni
  • 如何注冊(cè)公司微信公眾號(hào)網(wǎng)站seo系統(tǒng)
  • 國(guó)外做建材的網(wǎng)站有哪些手機(jī)端競(jìng)價(jià)惡意點(diǎn)擊能防止嗎
  • 深圳做h5網(wǎng)站設(shè)計(jì)百度關(guān)鍵詞排名批量查詢工具
  • 做網(wǎng)站模塊百度一下首頁(yè)極簡(jiǎn)版