• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

OpenCV 学习笔记(3)matlab相机参数标定

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

0准备标定版

F:\dongdong\0tool\MATLAB\help\toolbox\vision\examples

 

 matlab自动准备了一个pdf标定版打印出来,注意

 

 

 

1采集相机标定图像

采集代码

python 运行后,2秒自动抓拍存在save文件夹下面

自己拍摄不同的角度

 

 

import cv2
import datetime

#二维码动态识别
ImgW=640
ImgH=480
camera=cv2.VideoCapture(0)
camera.set(3,ImgW) #设置分辨率
camera.set(4,ImgH)


i=0


cv2.namedWindow(\'frame\',0)

start = datetime.datetime.now()

while True:
    (grabbed,frame)=camera.read()
    #获取画面中心点
    h1,w1= frame.shape[0],frame.shape[1]


   
    cv2.imshow(\'frame\',frame)
    key=cv2.waitKey(1)
    if key & 0xFF == ord(\'s\'):  # 按q保存一张图片
        i=i+1
        name="./save/frame"+str(i)+".jpg"
        cv2.imwrite(name, frame)
       
    elif key==ord(\'q\'):
        break

    end = datetime.datetime.now()
    timejiange=int(str((end-start).seconds))
    
    if timejiange>2:        
        i=i+1
        name="./save/frame"+str(i)+".jpg"
        cv2.imwrite(name, frame)
        start = datetime.datetime.now()
        print("保存",i)
    
    

camera.release()
cv2.destroyAllWindows()

  

 

2开始标定

 得到一组图像,打开matlab开始标定

    1. 应用程序下找到Camera Calibration工具箱

       

       

    2. 加载待标定的图像,这里选择2coefficients计算经向畸变更稳

    3.  

       

        

    4. 填写棋盘格每个格子边长的真实值   实验室的标定板  20mm  毫米    

    5. 可以预览成功检测出棋盘格的图像,然后开始标定,点击Calibrate

    6.  

       

       

       

       

       

    7. 平均误差小于0.5即可,超过的鼠标点击对应的柱状,删除键

    8.  

       

       

    9. 导出相机标定参数

       

       

    10. 在matlab工作空间里可以看到相机参数的属性

    11.  

       

       

       相机的内参矩阵 

    12.  

       

       

       


      径向畸变和切向畸变。

 

谷壳USB相机标定结果

 

 相机内参 3*3一共9个

831.514230246688 0 0
0 831.972596866759 0
327.324903206150 262.347092547845 1

真实使用需要转置沿着对角线翻上去

畸变参数

径向畸变Radial distortion  径向畸变3个(k1,k2,k3)

 

 

 (我们选择的是两个参数 k3认为0)

0.195387502976378 -1.36446754085673

 

切向畸变tangentialdistortion  2个(p1,p2)

 

 

 

 

 0 0

 

使用的时候

OpenCV中的畸变系数的排列(这点一定要注意k1,k2,p1,p2,k3),千万不要以为k是连着的。

 

代码调用

#相机内参 matlab标定出来的结果 不能直接用,需要沿着对角线翻转
fx = 831.514230246688
fy = 831.972596866759
cx = 327.324903206150
cy = 262.347092547845
K = np.array([[fx, 0., cx],
              [0., fy, cy],
              [0., 0., 1.0]])

#畸变系数k1 k2 pq p2 k3
dist=np.array(([[0.195387502976378 ,-1.36446754085673, 0 ,0 ,0]]))

  

 xml保存替换数据

<?xml version="1.0" encoding="utf-8"?>
<opencv_storage>
   <camera-matrix type_id="opencv-matrix">
      <rows>3</rows>
      <cols>3</cols>
      <dt>d</dt>
      <data>3099.7082447931371000 0.0000000000000000 1077.7535540640906000 
0.0000000000000000 3086.4434775466948000 1826.5450377846478000 
0.0000000000000000 0.0000000000000000 1.0000000000000000 
</data>
   </camera-matrix>
   <distortion type_id="opencv-matrix">
      <rows>5</rows>
      <cols>1</cols>
      <dt>d</dt>
      <data>-0.0890744873306951 5.1317176243308209 -0.0051019418392772 -0.0021081150992697 -39.0645994879151530 </data>
   </distortion>
</opencv_storage>

  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab怎么同时显示imshow 两幅图片发布时间:2022-07-18
下一篇:
【笔记】MATLAB中的图形(1)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap