相機標定 OpenCV

2021-10-02 19:41:48 字數 1561 閱讀 7676

使用opencv標定的好處:會自動生成乙個.xml檔案,方便使用。(即換不同相機時候只用換這個檔案,而不需要改變**)

作業系統:ubuntu16.04

opencv版本:3.4.6

攝像頭:電腦自帶攝像頭

標定步驟

1、找到標定例程

進入opencv安裝目錄,找到samples/cpp/tutorial_code/calib3d/camera_calibration目錄,把它拷貝到乙個合適的位置。(因為需要修改一些**,因此建議直接不要在原目錄下使用。)

2、修改標定配置引數

找到camera_calibration/in_vid5.xml檔案,這是標定程式使用的配置檔案,需要設定裡面的幾個引數

這個是棋盤格的高度和寬度!!注意:這裡的寬度和高度是棋盤格內部交叉點,不是傳統意義上的寬度和高度。

例如,下面這個就是9和2

那每格的寬度是下面這個引數,單位為mm

下面是最重要的,如果這個引數不對,識別的攝像頭就不對,甚至會報錯根本識別不到!!

所以!其他方式,我也還沒試過。

3、編譯

需要乙個cmakelists檔案,這裡摘抄網上的

project

(camera_calibration)

set(cmake_cxx_standard 11

)find_package

(opencv 3.0 quiet)

if(not opencv_found)

find_package

(opencv 2.4

.3 quiet)

if(not opencv_found)

message

(fatal_error "opencv > 2.4.3 not found."

)endif()

endif()

include_directories($)

add_executable

(camera_calibration camera_calibration.cpp)

target_link_libraries

(camera_calibration $

)

然後就是熟悉的

mkdir build

cd build

cmake .

.make

4、執行

終端執行

.

/camera_calibration .

./in_vid5.xml

(因為需要傳入引數,所以傳入配置檔案)

如果電腦上出現攝像頭視野,則成功了一大半,按照指示執行即可。

強調一點 : 使攝像頭從不同方向拍攝棋盤格,以保證程式準確計算影象畸變。

OpenCV相機標定

include include include include 標頭檔案 include using namespace cv 包含cv命名空間 using namespace std 棋盤標靶中每塊的寬和高 int g height 100 int g width 100 int g innerh...

OpenCV 相機標定(演算法)

include include include include include include include include include using namespace cv using namespace std int main 提取角點 if 0 findchessboardcorner...

opencv相機標定 2 單目相機標定流程

常用的標定函式和流程,網上一大堆,這裡就不想詳細寫了 這裡說一下標定後常見的問題和我自己的一些做法。畸變校正後,邊緣處出現一些黑色畫素區域,其實也算是正常的,去畸變後補充的畫素 比例係數 newcameramatrix.at double 0 0 newcameramatrix.at double ...