欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+OpenCV實(shí)現(xiàn)相機(jī)標(biāo)定的方法詳解

 更新時(shí)間:2023年05月17日 11:32:18   作者:微小冷  
opencv中內(nèi)置了張正友的棋盤(pán)格標(biāo)定法,通過(guò)一些姿態(tài)各異的棋盤(pán)格圖像,可以標(biāo)定相機(jī)的內(nèi)外參數(shù),本文為大家介紹OpenCV進(jìn)行相機(jī)標(biāo)定的具體方法,希望對(duì)大家有所幫助

opencv中內(nèi)置了張正友的棋盤(pán)格標(biāo)定法,通過(guò)一些姿態(tài)各異的棋盤(pán)格圖像,就能標(biāo)定相機(jī)的內(nèi)外參數(shù)。

角點(diǎn)檢測(cè)

第一步是角點(diǎn)檢測(cè),首先需要讀取棋盤(pán)格圖像

import numpy as np
import cv2
import os

path = 'imgs'   # 圖像文件夾;相對(duì)路徑
fs = os.listdir(path)
grays = []
for f in fs:
    fName = os.path.join(path, f)
    img = cv2.imread(fName)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 圖像轉(zhuǎn)灰度
    grays.append(gray)

其中,grays中便是所有棋盤(pán)格灰度圖像,接下來(lái),就要找到這些棋盤(pán)格的角點(diǎn)位置,主要用到函數(shù)findChessboardCorners,其輸入?yún)?shù)為棋盤(pán)格圖像、角點(diǎn)個(gè)數(shù)以及標(biāo)志位。

w, h = 11, 8        # 交點(diǎn)橫縱個(gè)數(shù)

# 亞像素點(diǎn)的檢測(cè)條件
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
pImgs = []
for g in grays: 
   # cs即位初步檢測(cè)的角點(diǎn)
   ret, cs = cv2.findChessboardCorners(g, (w, h), None) 
   # 亞像素角點(diǎn)檢測(cè)
   pImg = cv2.cornerSubPix(g, cs.astype(np.float32), (5, 5), (-1,   -1), criteria)
   pImgs.append(np.squeeze(pImg))

其中,pImg用于存放像素坐標(biāo)中的二維點(diǎn)。

查看角點(diǎn)

為了驗(yàn)證角點(diǎn)檢測(cè)是否合理,可以將其畫(huà)出來(lái),用opencv自帶的工具就像下面這樣就可以,

cv2.drawChessboardCorners(grays[0], (w, h), pImgs[0], None)
cv2.imshow('findCorners', grays[0])
cv2.waitKey(1000)

但窗口縮放比較麻煩,所以更推薦用經(jīng)典的matplotlib來(lái)畫(huà)圖

import matplotlib.pyplot as plt
pts = pImgs[0].squeeze().reshape(-1,2).T
plt.imshow(grays[0])
plt.scatter(pts[0], pts[1], marker='*', c='red')
plt.show()

效果如下

標(biāo)定

函數(shù)calibrateCamera可用于圖像標(biāo)定,只需將現(xiàn)實(shí)世界的點(diǎn)和相機(jī)坐標(biāo)系中的角點(diǎn)的一一對(duì)應(yīng)關(guān)系輸入,便能得到相應(yīng)的相機(jī)矩陣。其中,現(xiàn)實(shí)世界中哦的三維點(diǎn),一般成為對(duì)象點(diǎn),由于棋盤(pán)格中每個(gè)方塊都是等距的,故可直接建立為類(lèi)似(1,0,0), (2,0,0)...即可

objp = np.zeros((6*7,3), np.float32)
objp[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2)

pObj = np.zeros((w*h, 3), np.float32)
pObj[:,:2] = np.mgrid[0:w, 0:h].T.reshape(-1,2)
pObjs = [pObj for _ in range(len(pImgs))]

至此,萬(wàn)事俱備,只需調(diào)用

size = grays[0].shape[::-1]     # 圖像尺寸
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(pObjs, pImgs, size, None, None)

其中,rec為成功標(biāo)志,為T(mén)rue時(shí)表示標(biāo)定成功。

mtx為內(nèi)參矩陣,差不多是

dist為畸變參數(shù),最多有8個(gè),分別表示k1,k2,p1,p2,k3,k4,k5,k6,本次標(biāo)定得到的結(jié)果為

>>> print(dist)
[[-8.36577030e-02 -1.68977185e-01 -1.12233478e-03  9.45685802e-04
  -2.04246147e+01]]

這些畸變參數(shù)的物理意義如下

以上就是Python+OpenCV實(shí)現(xiàn)相機(jī)標(biāo)定的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV相機(jī)標(biāo)定的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python venv和virtualenv模塊詳解

    python venv和virtualenv模塊詳解

    venv 是 Python 內(nèi)置標(biāo)準(zhǔn)庫(kù)中創(chuàng)建輕量級(jí)虛擬環(huán)境的工具,本文通過(guò)示例代碼介紹python venv和virtualenv的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • python測(cè)試開(kāi)發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat)

    python測(cè)試開(kāi)發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat)

    Supervisor是用Python開(kāi)發(fā)的一個(gè)client/server服務(wù),是Linux/Unix系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持Windows系統(tǒng),這篇文章主要介紹了python測(cè)試開(kāi)發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat),需要的朋友可以參考下
    2022-07-07
  • Python使用socket實(shí)現(xiàn)組播與發(fā)送二進(jìn)制數(shù)據(jù)

    Python使用socket實(shí)現(xiàn)組播與發(fā)送二進(jìn)制數(shù)據(jù)

    在工作中經(jīng)常會(huì)用到socket傳輸數(shù)據(jù),例如客戶(hù)端給服務(wù)器發(fā)送數(shù)據(jù)(雙方約定了數(shù)據(jù)格式),本文主要介紹了Python使用socket實(shí)現(xiàn)組播與發(fā)送二進(jìn)制數(shù)據(jù),感興趣的可以了解一下
    2021-06-06
  • Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例

    Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例

    這篇文章主要介紹了Python設(shè)計(jì)模式之觀察者模式,簡(jiǎn)單描述了觀察者模式的概念、原理,并結(jié)合實(shí)例形式分析了Python觀察者模式的相關(guān)定義與使用技巧,需要的朋友可以參考下
    2018-01-01
  • 再也不用花錢(qián)買(mǎi)漫畫(huà)!Python爬取某漫畫(huà)的腳本及源碼

    再也不用花錢(qián)買(mǎi)漫畫(huà)!Python爬取某漫畫(huà)的腳本及源碼

    今天帶大家學(xué)習(xí)Python的相關(guān)知識(shí),文章圍繞著怎么用Python下載漫畫(huà)展開(kāi),文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下
    2021-06-06
  • Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能詳解

    Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能詳解

    這篇文章主要介紹了Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能,結(jié)合實(shí)例形式詳細(xì)分析了Django框架內(nèi)置方法實(shí)現(xiàn)登錄功能的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁(yè)的實(shí)例代碼

    Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁(yè)的實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁(yè)的實(shí)例代碼,有興趣的朋友們可以學(xué)習(xí)分享下。
    2020-10-10
  • python 第三方庫(kù)的安裝及pip的使用詳解

    python 第三方庫(kù)的安裝及pip的使用詳解

    下面小編就為大家?guī)?lái)一篇python 第三方庫(kù)的安裝及pip的使用詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • 在?Python?中如何為對(duì)象添加屬性

    在?Python?中如何為對(duì)象添加屬性

    在本文中我們將介紹如何在Python中為對(duì)象添加屬性,我們還將通過(guò)示例介紹如何在Python中更改對(duì)象的屬性,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-06-06
  • python取代netcat過(guò)程分析

    python取代netcat過(guò)程分析

    本篇文章通過(guò)代碼實(shí)例給大家詳細(xì)分析了python取代netcat過(guò)程,希望我們整理的內(nèi)容能夠幫助到你。
    2018-02-02

最新評(píng)論