基于python opencv單目相機標定的示例代碼
發(fā)布日期:2022-02-02 00:06 | 文章來源:腳本之家
相機固定不動,通過標定版改動不同方位的位姿進行抓拍
import cv2 camera=cv2.VideoCapture(1) i = 0 while 1: (grabbed, img) = camera.read() cv2.imshow('img',img) if cv2.waitKey(1) & 0xFF == ord('j'): # 按j保存一張圖片 i += 1 u = str(i) firename=str('./img'+u+'.jpg') cv2.imwrite(firename, img) print('寫入:',firename) if cv2.waitKey(1) & 0xFF == ord('q'): break
將抓拍好的圖片存放程序的同一級目錄下 運行標定代碼如下:
# 相機標定 import cv2 # 修改目錄 # 首先讀取圖像并轉(zhuǎn)為灰度圖 img = cv2.imread('c1.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # cv2.imshow("img",img) # cv2.imshow("gray",gray) # 使用OpenCV的cv2.findChessboardCorners()函數(shù)找出棋盤圖中的對角(即圖片中黑白相對的點的坐標), # 同時使用cv2.drawChessboardCorners()將之畫出來 # cv2.findChessboardCorners參數(shù)patternSize取(9,5)--棋盤圖中每行和每列交點的個數(shù) # 其原因在于導入的圖片./camera_cal/calibration1.jpg數(shù)一下交點的數(shù)目,一行有9個,一列有5個 # Adam博客當中?。?,6)原因在于他的圖和我的圖不一樣,認真數(shù)一下可以發(fā)現(xiàn)他的圖確實是一行9個一列6個角點 # 事實證明,可以取任何只要在size小于圖片中的交點數(shù)即可 # 函數(shù)解析參見官網(wǎng)https://docs.opencv.org/3.3.0/dc/dbb/tutorial_py_calibration.html # It returns the corner points and retval which will be True if pattern is obtained. # These corners will be placed in an order (from left-to-right, top-to-bottom) ret, corners = cv2.findChessboardCorners(gray, (9, 5),None) print(ret) print(corners) # 交點坐標 if ret == True: img = cv2.drawChessboardCorners(img, (9, 5), corners, ret) cv2.imshow("final",img) cv2.waitKey() cv2.destroyAllWindows()
到此這篇關(guān)于基于python opencv單目相機標定的文章就介紹到這了,更多相關(guān)python opencv相機標定內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
相關(guān)文章