基于python opencv单目相机标定的示例代码
作者:冰软 发布时间:2022-10-10 23:42:37
标签: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()
来源:https://blog.csdn.net/qq_43010752/article/details/122298672


猜你喜欢
- 模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成 * 页,golang提供了html/tem
- 前言没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来。
- 效果基于Python3。在自己写小工具的时候因为这个功能纠结了一会儿,这里写个小例子,供有需要的参考。小例子,就是点击按钮打开路径选择窗口,
- 本文主要介绍了Python3.9.0a1安装pygame出错解决全过程,分享给大家,具体如下:解决方法先说一下经验教训:pygame最后终于
- 在这里我们介绍两个拼接数组的方法:np.vstack():在竖直方向上堆叠np.hstack():在水平方向上平铺import numpy
- 举例说明: 在Windows环境下:原本在php4.3.0中运行正常的程序,在4.3.1中为何多处报错,大体提示为:Notice:Undef
- 本文实例讲述了Python list列表中删除多个重复元素操作。分享给大家供大家参考,具体如下:我们以下面这个list为例,删除其中所有值为
- 用Pytorch1.0进行半精度浮点型网络训练需要注意下问题:1、网络要在GPU上跑,模型和输入样本数据都要cuda().half()2、模
- 三种遍历列表里面序号和值的方法:最近学习python这门语言,感觉到其对自己的工作效率有很大的提升,特在情人节这一天写下了这篇博客,下面废话
- 一般情况下,局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间,原因是过程中省略了每次联网后从DHCP服务器获取IP地
- 本文介绍了python画图时设置分辨率和画布大小的实现,主要使用plt.figure(),下面就一起来了解一下plt.figure()示例:
- Python之Web框架Django项目搭建全过程IDE说明:Win7系统Python:3.5Django:1.10Pymysql:0.7.
- 在安装库的时候,一定要特别注意包之间的依赖性一、在Pycharm中直接安装第三方库1、打开Pycharm,点击左上角的File,点击Sett
- 前言报错如下:Could not open JDBC Connection for transaction; nested exceptio
- 前言使用 requests进行爬取、BeautifulSoup进行数据提取。主要分成两步: 第一步是解析图书列表页,并解析出里面的图书详情页
- 利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。1、创建保存备份文件的路径/mysqldata#mkdi
- 同一台服务器上部署多个项目时,项目可能使用不同版本的django或者其它不同的python库,这种情况下可以使用virtualenv来创建独
- 本文实例讲述了Python基于csv模块实现读取与写入csv数据的方法。分享给大家供大家参考,具体如下:通过csv模块可以轻松读取格式为cs
- 前一篇文章《Python 中如何实现参数化测试?》中,我提到了在 Python 中实现参数化测试的几个库,并留下一个问题:它们是如何做到把一
- 1、not关键词可以反转一个布尔值。>>> not TrueFalse>>>>>> n