Python3.x对单目摄像头进行标校(为深度学习打下基础)

本文介绍如何使用Python3.x和OpenCV进行单目摄像头的标校,包括环境搭建、所需外设、步骤说明及效果展示。通过采集多角度图像,计算相机内参和畸变参数,实现摄像头的校正。
摘要由CSDN通过智能技术生成

沿用上一篇文章硬件实现对于摄像头标校

此案例仅仅为实验标校功能基础,为单目标校

环境搭建

  1. python3.x及其以上版本
  2. 需要opencv库支持
  3. 需要glob支持
  4. 需要numpy支持

安装方法如下
在cmd终端中输入

pip install opencv-python
pip install numpy
pip install glob

需要的外设

需要打印一张9*6棋盘黑白格(采用摄像头不同,所使用的棋盘格也有所差异)
在这里插入图片描述

输入如下完整代码

import cv2
import numpy as np
import imageio
import os
import time 
from glob import glob

img_dir = '标定图'
os.makedirs(img_dir, exist_ok=True)

# 观察窗口分辨率
viewer_hw = [720, 1280]
# 相机分辨率
capture_resolution_hw = [1080, 1920]
'''
cam = cv2.VideoCapture(0)
cam.set(cv2.CAP_PROP_FRAME_WIDTH, 1080)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 1920)
'''
cam_id = int(1)
# dshow only for windows
cam_cap = cv2.CAP_DSHOW
# v4l2 only for linux
# cam_cap = cv2.CAP_V4L2
cam = cv2.VideoCapture(cam_cap + cam_id)

if not cam.isOpened():
    print('open cam id %d failure' % cam_id)
    exit(-1)

imhw = [0, 0]

# 预热相机
print('预启动相机')

while True:
    ret, img = cam.read()
    if ret:
        imhw = img.shape[:2]
        break
    print('预热失败')

print('open cam success')

# 启动相机设置面板,只有windows并且使用dshow时可用,Linux上无效
cam.set(cv2.CAP_PROP_SETTINGS, 0)

# 设置相机分辨率,windows上opencv默认使用vfw,会造成实际无法更改分辨率情况,所以需要上面设置为dshow设备
print('设定相机X分辨率', cam.set(cv2.CAP_PROP_FRAME_WIDTH, capture_resolution_hw[1]))
print('设定相机Y分辨率', cam.set(cv2.CAP_PROP_FRAME_HEIGHT, capture_resolution_hw[0]))
print('当前相机X分辨率', cam.get(cv2.CAP_PROP_FRAME_WIDTH))
print('当前相机Y分辨率', cam.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 初始化观察窗口
cv2.namedWindow('viewer', cv2.WINDOW_FREERATIO | cv2.WINDOW_GUI_EXPANDED)
cv2.resizeWindow('viewer', viewer_hw[1], viewer_hw[0])
cv2.namedWindow('findCorners', cv2.WINDOW_FREERATIO | cv2.WINDOW_GUI_EXPANDED)
cv2.resizeWindow('findCorners', viewer_hw[1], viewer_hw[0])

cv2.imshow('viewer'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值