基於python opencv單目相機標定的示例代碼
相機固定不動,通過標定版改動不同方位的位姿進行抓拍
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 # 修改目錄 # 首先讀取圖像並轉為灰度圖 img = cv2.imread('c1.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # cv2.imshow("img",img) # cv2.imshow("gray",gray) # 使用OpenCV的cv2.findChessboardCorners()函數找出棋盤圖中的對角(即圖片中黑白相對的點的坐標), # 同時使用cv2.drawChessboardCorners()將之畫出來 # cv2.findChessboardCorners參數patternSize取(9,5)--棋盤圖中每行和每列交點的個數 # 其原因在於導入的圖片./camera_cal/calibration1.jpg數一下交點的數目,一行有9個,一列有5個 # Adam博客當中取(9,6)原因在於他的圖和我的圖不一樣,認真數一下可以發現他的圖確實是一行9個一列6個角點 # 事實證明,可以取任何隻要在size小於圖片中的交點數即可 # 函數解析參見官網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()
到此這篇關於基於python opencv單目相機標定的文章就介紹到這瞭,更多相關python opencv相機標定內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- OpenCV實現相機校正
- opencv-python圖像處理安裝與基本操作方法
- OpenCV半小時掌握基本操作之圖像基礎操作
- OpenCV-Python實現輪廓擬合
- python通過opencv調用攝像頭操作實例分析