基于python opencv单目相机标定的示例代码

作者:冰软 时间:2022-10-10 23:42:37 

相机固定不动,通过标定版改动不同方位的位姿进行抓拍


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()

来源:https://blog.csdn.net/qq_43010752/article/details/122298672

标签:python,opencv,相机标定
0
投稿

猜你喜欢

  • ES6/JavaScript使用技巧分享

    2024-04-30 10:10:04
  • 用Go写一个轻量级的ssh批量操作工具的方法

    2024-05-21 10:28:04
  • MySql添加新用户及为用户创建数据库和给用户分配权限方法介绍

    2024-01-29 01:03:10
  • javascript获取浏览器类型和版本的方法(js获取浏览器版本)

    2024-06-07 15:51:32
  • 什么是JSON及JSON的结构

    2008-06-15 07:16:00
  • Python包管理工具pip的15 个使用小技巧

    2023-08-30 17:30:51
  • prototype.js1.4版开发者手册

    2007-09-30 14:09:00
  • aspjpeg 添加水印教程及生成缩略图教程

    2011-04-04 11:04:00
  • 简单谈谈MySQL优化利器-慢查询

    2024-01-28 02:30:33
  • TIOBE编程语言排行榜前20的语言入门书籍推荐

    2023-04-05 12:19:48
  • Django使用中间件解决前后端同源策略问题

    2022-09-05 10:33:32
  • 如何使用SublimeText3配置 PHP IDE环境

    2024-04-30 09:58:51
  • js控制输入框获得和失去焦点时状态显示的方法

    2024-04-17 10:24:04
  • Java语言实现对MySql数据库中数据的增删改查操作的代码

    2024-01-21 21:19:43
  • JavaScript监听触摸事件代码实例

    2023-08-20 19:12:54
  • Golang import本地包和导入问题相关详解

    2024-01-30 09:35:37
  • 改变链接,让别人永远找不到你的程序

    2008-09-13 18:57:00
  • MySQL开启慢查询日志功能的方法

    2024-01-19 10:09:37
  • Python2.7.10以上pip更新及其他包的安装教程

    2022-12-17 18:44:55
  • thinkphp实现发送邮件密码找回功能实例

    2024-05-02 17:16:54
  • asp之家 网络编程 m.aspxhome.com