Python-OpenCV棋盘检测/相机标定

操作系统Windows

  • 运行此代码需要预先安装好Python-OpenCV,Python版本为Python3.8

此代码功能为:

  • 使用OpenCV调用摄像头
  • 对摄像头拍摄到的每一帧图片进行张正友棋盘检测,并将检测到的棋盘绘制在图片上
  • 对需要的图片按下键盘s键可以保存到电脑上

优点

  • 降低通过相机拍摄棋盘图片时的废图片率

#*********************************************************************#
#*                           By Huang Wenjun                         *#
#*********************************************************************#
import cv2 as cv
import  numpy as np# --------------------------------------------------------
# 打开摄像头
cap = cv.VideoCapture(0,cv.CAP_DSHOW)  #更改API设置
flag = cap.isOpened()
cap.set(3, 1280)
cap.set(4, 720)# --------------------------------------------------------
# 定义棋盘
chessboard_size = (15,13)
a = np.prod(chessboard_size)
# 生成195×3的矩阵,用来保存棋盘图中15*13个内角点的3D坐标,也就是物体点坐标
objp = np.zeros((np.prod(chessboard_size), 3), dtype=np.float32)
# 通过np.mgrid生成对象的xy坐标点,每个棋盘格大小是18mm
# 最终得到z=0的objp为(0,0,0), (1*13,0,0), (2*13,0,0) ,...
objp[:, :2] = np.mgrid[0:chessboard_size[0], 0:chessboard_size[1]].T.reshape(-1, 2) * 18# 设置终止条件: 迭代3次或者变动 < 0.1
# criteria = None
criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 3, 0.1)obj_points = []  # 保存世界坐标系的三维点
img_points = []  # 保存图片坐标系的二维点# --------------------------------------------------------
# 检测照片index = 0
while (flag):ret1, frame = cap.read()frame_save = frame.copy()gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)ret2, corners = cv.findChessboardCorners(gray, chessboard_size, None)if ret2 == True:obj_points.append(objp)# 亚像素级角点检测,在角点检测中精确化角点位置corners2 = cv.cornerSubPix(gray, corners, (5, 5), (-1, -1), criteria)img_points.append(corners2)# 在图中标注角点,方便查看结果frame = cv.drawChessboardCorners(frame, chessboard_size, corners2, ret2)# img = cv.resize(img, (400,600))# frame = cv.flip(frame, 1)  # 水平翻转cv.imshow("Capture_Paizhao", frame)# print(cap.get(3),cap.get(4))k = cv.waitKey(1) & 0xFFif k == ord('s'):  # 按下s键,进入下面的保存图片操作cv.imwrite(r"F:\PyCharm\Camera_calibration_GIT\class1\0" + str(index) + ".jpg", frame_save)print(cap.get(3))print(cap.get(4))print("save" + str(index) + ".jpg successfuly!")print("-------------------------")index += 1elif k == ord('q'):  # 按下q键,程序退出break
cap.release()
cv.destroyAllWindows()

文件下载链接

Python-OpenCV棋盘检测相关推荐

  1. Python OpenCv 车牌检测识别(边缘检测、HSV色彩空间判断)

    Python OpenCv 车牌检测识别 背景 车牌识别在交通.停车等方面有着广泛应用,在网上也有很多种基于OpenCV方案进行识别,本文是综合了两种比较流行的方案,首先是提取出疑似车牌区域的轮廓,然 ...

  2. python+OpenCV视频检测+代码以及注解

    这部分是关于检测摄像头中的人脸,以及对mp4中的文件人脸检测,上代码: #导入cv模块 import cv2 as cv #检测函数 def face_detect_demo(img):gary = ...

  3. Python OpenCV -- 轮廓检测 (十四)

    轮廓检测 Canny 之类的边缘检测算法可以根据像素间的差异检测出轮廓边界,但是它并没有将轮廓作为一个整体 轮廓是构成任何一个形状的边界或外形线.直方图对比和模板匹配根据色彩的分布来进行匹配,以下包括 ...

  4. python opencv 如何检测模糊图像?自动判断模糊程度 cv2.Laplacian().var()

    参考文章1:python判断图片模糊 参考文章2:3行代码Python搞定图片清晰度识别,原来我们看到的不一定是这样的 示例代码 # -*- encoding: utf-8 -*- "&qu ...

  5. python opencv轮廓检测_OpenCV 轮廓检测的实现方法

    轮廓概述 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓在形状分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化处理或 ...

  6. python opencv 肤色检测

    附上我自己的实例代码 基于运动信息和肤色检测的手位置检测 基于深度学习的asl手语识别例程 1 椭圆肤色检测模型 原理:将RGB图像转换到YCRCB空间,肤色像素点会聚集到一个椭圆区域.先定义一个椭圆 ...

  7. python opencv 轮廓检测_opencv之轮廓检测与处理

    查找图像的轮廓在图像处理及应用中扮演着重要的角色. opencv中 查找轮廓的函数提供的是cv::findContours() 把查找的轮廓划到图像上cv::drawContours() 1.轮廓的查 ...

  8. 毕设 深度学习 python opencv 火焰检测识别 火灾检测

    文章目录 0 前言 1 基于YOLO的火焰检测与识别 2 课题背景 3 卷积神经网络 3.1 卷积层 3.2 池化层 3.3 激活函数: 3.4 全连接层 3.5 使用tensorflow中keras ...

  9. python opencv轮廓检测_python opencv 来对图片(苹果)的轮廓(最大轮廓进行识别)进行...

    import cv2 as cv import numpy as np # canny边缘检测 def canny_demo(image): t = 140 canny_output = cv.Can ...

  10. python opencv 烟雾检测

最新文章

  1. centos7 pe系统安装_老毛桃WinPE以ISO镜像模式安装CentOS7
  2. aes c# java_AES加密,C#和java相同
  3. 【Tools】Tools博客汇总
  4. OpenCV:SURF算法浅析
  5. PLSQL触发器随笔
  6. java 生成静态html的一段代码
  7. Webrtc之2台电脑视频聊天
  8. 苹果Mac好用的SSH连接客户端工具:​​​​​​​​​​​​Termius
  9. git merge/git rebase分支合并
  10. MAX262程控滤波器
  11. 第十一节:抽象类和接口【java】
  12. 无线数字信息传送服务器,无线数字远程监控管理及网站实时推广项目方案.doc...
  13. javascript 实现1加到100
  14. 巧用京东物流分享链接批量查询多个京东快递的物流信息
  15. Slices in Python
  16. 贪心算法解决雷达站建站问题
  17. 小林和腾讯不得不说的故事(完整篇)
  18. 社会软件力量:六度分隔理论
  19. linux dd创建大文件模拟磁盘不足监控
  20. 如何抓取安卓APP日志?

热门文章

  1. C语言核心知识点大汇总
  2. Shiro(4)整合SpringBoot2.x
  3. 小龟视频APP-插件打包-v1.6.x反编译教程及未加固apk包ios最新版文件分享
  4. Mac版PS如何导入笔刷 ,ps笔刷导入安装教程
  5. python升级pip_python中pip升级
  6. 免费临时邮箱,一次性邮箱
  7. 模拟器也可以使用摄像头,不用真机也可以测试摄像头程序 ,
  8. iView的table表格购物车的使用案例
  9. 云闪付华为P9指纹_截胡小米支付妥妥的!华为支付正式上线,支持25家银行
  10. 无线获能 — 系最适合低功耗及无源物联网能量收集技术