当前位置: 首页 > news >正文

OpenCV 寻找棋盘格角点及绘制

目录

一、概念

二、代码

2.1实现步骤

2.2完整代码

三、实现效果


一、概念

        寻找棋盘格角点(Checkerboard Corners)是计算机视觉中相机标定(Camera Calibration)过程的重要步骤。

        OpenCV 提供了函数 cv2.findChessboardCorners 来检测棋盘格图像中的角点,该函数会从图像的左上角开始扫描,以一定的步长(步长由棋盘格的大小和图像分辨率决定)逐行或逐列地寻找具有棋盘格特征的区域。在找到棋盘格特征后,函数会进一步处理这些区域,确定精确的角点位置,并按照从左到右、从上到下的顺序排列这些角点。这些角点用于标定相机内参和畸变系数。

二、代码

2.1实现步骤

1.图像预处理:

  • 将图像转换为灰度图像,因为角点检测在灰度图像上更有效。
  • 如果图像有噪声,可以使用滤波器进行平滑处理。

2.角点检测:

  • 使用 Harris 角点检测或其他基于梯度的检测方法,找到图像中的所有角点。
  • 通过几何约束(如角点之间的固定间距)筛选出棋盘格的角点。

3.亚像素级精度优化:

  • 使用 cv2.cornerSubPix 对检测到的角点进行优化,提高角点位置的精度。

2.2完整代码

import cv2
import numpy as np
import glob# 定义棋盘格的大小(内角点的个数)
chessboard_size = (11, 8)  # 11x8的棋盘格# 图像文件路径
image_files = glob.glob('file_path/*.png')  # 替换为实际图像文件路径模式# 检测并绘制棋盘格角点
for image_file in image_files:# 读取图像image = cv2.imread(image_file)if image is None:print(f"Image at {image_file} not found or failed to read")continue# 将图像转换为灰度图像gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 寻找棋盘格的角点ret, corners = cv2.findChessboardCorners(gray_image, chessboard_size, None)# 如果找到角点,则绘制它们if ret:# 优化角点位置criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)corners2 = cv2.cornerSubPix(gray_image, corners, (11, 11), (-1, -1), criteria)# 绘制角点cv2.drawChessboardCorners(image, chessboard_size, corners2, ret)# 为每个角点添加数字标签for i, corner in enumerate(corners2):corner = tuple(map(int, corner.ravel()))  # 确保corner是一个包含两个整数值的元组cv2.putText(image, str(i+1), corner, cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1, cv2.LINE_AA)# 显示结果cv2.imshow('Chessboard Corners', image)# 等待用户按下 ESC 键(ASCII 码 27)关闭窗口while True:if cv2.waitKey(100) == 27:  # 每 0.1 秒检查一次break# cv2.waitKey(500)  # 等待500毫秒,显示下一张图像else:print(f"Chessboard corners not found in image {image_file}")cv2.destroyAllWindows()

三、实现效果

相关文章:

OpenCV 寻找棋盘格角点及绘制

目录 一、概念 二、代码 2.1实现步骤 2.2完整代码 三、实现效果 一、概念 寻找棋盘格角点(Checkerboard Corners)是计算机视觉中相机标定(Camera Calibration)过程的重要步骤。 OpenCV 提供了函数 cv2.findChessboardCorners…...

【深度学习】PyTorch深度学习笔记02-线性模型

1. 监督学习 2. 数据集的划分 3. 平均平方误差MSE 4. 线性模型Linear Model - y x * w 用穷举法确定线性模型的参数 import numpy as np import matplotlib.pyplot as pltx_data [1.0, 2.0, 3.0] y_data [2.0, 4.0, 6.0]def forward(x):return x * wdef loss(x, y):y_pred…...

10.FreeRTOS_互斥量

互斥量概述 在博文“ FreeRTOS_信号量 ”中,使用了二进制信号量实现了互斥,保护了串口资源。博文链接如下: FreeRTOS_信号量-CSDN博客 但还是要引入互斥量的概念。互斥量与二进制信号量相比,能够多实现如下两个功能&#xff1a…...

EtherCAT总线冗余让制造更安全更可靠更智能

冗余定义 什么是总线冗余功能?我们都知道,EtherCAT现场总线具有灵活的拓扑结构,设备间支持线型、星型、树型的连接方式,其中线型结构简单、传输效率高,大多数的现场应用中也是使用这种连接方式,如下图所示…...

Android IdleHandler源码分析

文章目录 Android IdleHandler源码分析概述前提基本用法源码分析添加和删除任务执行任务 应用场景 Android IdleHandler源码分析 概述 IdleHandler是一个接口,它定义在MessageQueue类中,用于在主线程的消息队列空闲时执行一些轻量级的任务。IdleHandle…...

Mac安装stable diffusion 工具

文章目录 1.安装 Homebrew2.安装 stable diffusion webui 的依赖3.下载 stable diffusion webui 代码4.启动 stable diffusion webui 本体5.下载模型6.这里可能会遇到一个clip-vit-large-patch14报错 参考:https://brew.idayer.com/install/stable-diffusion-webui/…...

CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)

一、漏洞名称 OpenSSH 远程代码执行漏洞(CVE-2024-6387) 二、漏洞概述 Open SSH是基于SSH协议的安全网络通信工具,广泛应用于远程服务器管理、加密文件传输、端口转发、远程控制等多个领域。近日被爆出存在一个远程代码执行漏洞,由于Open SSH服务器端…...

python的简单爬取

需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式(爬取百度logo为例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…...

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频)

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频) 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。d…...

【学术会议征稿】第三届智能电网与能源系统国际学术会议

第三届智能电网与能源系统国际学术会议 2024 3rd International Conference on Smart Grid and Energy Systems 第三届智能电网与能源系统国际学术会议(SGES 2024)将于2024年10月25日-27日在郑州召开。 智能电网可以优化能源布局,让现有能源…...

01. 课程简介

1. 课程简介 本课程的核心内容可以分为三个部分,分别是需要理解记忆的计算机底层基础,后端通用组件以及需要不断编码练习的数据结构和算法。 计算机底层基础可以包含计算机网络、操作系统、编译原理、计算机组成原理,后两者在面试中出现的频…...

iOS热门面试题(三)

面试题1:在iOS开发中,什么是MVC设计模式?请详细解释其各个组成部分,并给出一个实际应用场景,包括具体的代码实现。 答案: MVC设计模式是一种在软件开发中广泛使用的架构模式,特别是在iOS开发中…...

ECS中postTransform.Value = float4x4.Scale(1, math.sin(elapsedTime), 1)

在Unity的ECS(Entity Component System)架构中,postTransform.Value float4x4.Scale(1, math.sin(elapsedTime), 1); 用于设置一个变换矩阵的缩放部分。下面是对这行代码的详细解释: postTransform: 这是一个表示变换的组件或结构…...

VLM技术介绍

1、背景 视觉语言模型(Visual Language Models)是可以同时从图像和文本中学习以处理许多任务的模型,从视觉问答到图像字幕。 视觉识别(如图像分类、物体保护和语义分割)是计算机视觉研究中一个长期存在的难题&#xff…...

x264 编码器 AArch64 汇编函数模块关系分析

x264 编码器 AArch64 汇编介绍 x264 是一个流行的开源视频编码器,它实现了 H.264/MPEG-4 AVC 标准。x264 项目致力于提供一个高性能、高质量的编码器,支持多种平台和架构。对于 AArch64(即 64 位 ARM 架构),x264 编码器利用该架构的特性来优化编码过程。在 x264 编码器中,…...

windows10开启防火墙,增加入站规则后不生效,还是不能访问后端程序

一、背景: 公司护网要求开启防火墙,开启防火墙后,前后端分离的项目调试受影响,于是增加入站规则开放固定的后台服务端口,增加的mysql端口3306和redis端口6379,别人都可以访问,但是程序的端口808…...

academic-homepage:快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等,同时页面布局兼容移动端。

今天给大家分享GitHub 上一个开源的 GitHub Pages 模板 academic-homepage。 可帮助你快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等最基本内容,同时页面布局兼容移动端。 相关链接 github.com/luost26/academic-homepage …...

.env.development、.env.production、.env.staging

环境变量文件(如 .env.development、.env.production、.env.staging)用于根据不同的环境(开发、生产、测试等)配置应用程序的行为。 作用 .env.development:用于开发环境的配置。开发人员在本地开发时会使用这个文件…...

国密证书(gmssl)在Kylin Server V10下安装

1.查看操作系统信息 [root@localhost ~]# cat /etc/.kyinfo [dist] name=Kylin milestone=Server-V10-GFB-Release-ZF9_01-2204-Build03 arch=arm64 beta=False time=2023-01-09 11:04:36 dist_id=Kylin-Server-V10-GFB-Release-ZF9_01-2204-Build03-arm64-2023-01-09 11:04:…...

【数据服务篇】法律快车问答数据:为法律智能化铺就道路

数据来源 法律快车汇集了广泛的法律问题和专业律师的回答,这些来自用户和律师的数据构成了丰富的问答资源。用户通过平台提交各类法律疑问,得到资深律师的详尽解答,形成了一系列真实、多样化的法律案例和讨论。 数据获取见文末。 数据内容…...

基于python的本地选择图像接入百度云api的图像识别项目

项目灵感来源于老师布置的任务。怎么感觉老师这个题目也是ai生成的~。~ 题目:基于 AI 视觉的本地图像分析脚本 任务要求: 请使用 Python 编写一个通用的图像分析脚本,具体流程需满足以下三个步骤: * 本地选图:程序运…...

证书配置与资源拦截全攻略:res-downloader高效使用指南

证书配置与资源拦截全攻略:res-downloader高效使用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader res-downl…...

Win11 Edge浏览器频繁断网?3分钟搞定IPv6设置(附DNS优化技巧)

Win11 Edge浏览器频繁断网?深度解析IPv6兼容性问题与DNS优化实战 最近不少Win11用户反馈Edge浏览器频繁断网,而其他应用却正常运作。这种看似诡异的网络问题,往往源于IPv6协议栈的兼容性故障。作为微软新一代操作系统与浏览器的组合&#xff…...

Phi-4-mini-reasoning实操手册:从模型加载到端口访问完整流程

Phi-4-mini-reasoning实操手册:从模型加载到端口访问完整流程 1. 模型概述 Phi-4-mini-reasoning是一款3.8B参数的轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。该模型由Azure AI Foundry开发,主打"小参数、强推…...

智能型碧蓝航线自动化助手:AzurLaneAutoScript全方位游戏管理方案

智能型碧蓝航线自动化助手:AzurLaneAutoScript全方位游戏管理方案 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript …...

MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?

一、快速结论(先看结论再看分析)方式作用效率一句话总结count(*)统计所有行数⭐⭐⭐⭐ 最高我是专业的!我为统计而生count(1)统计所有行数⭐⭐⭐⭐ 同样高效我是 count(*) 的马甲兄弟count(列名)统计该列非 NULL 的行数⭐⭐⭐ 较慢我挑剔&…...

Anaconda环境管理:为Phi-4-mini-reasoning 3.8B创建独立的Python开发环境

Anaconda环境管理:为Phi-4-mini-reasoning 3.8B创建独立的Python开发环境 1. 为什么需要独立环境? 在数据科学和机器学习项目中,环境隔离是个经常被忽视但极其重要的问题。想象一下这样的场景:你花了两周时间调试一个模型&#…...

开源CLAP音频分类实战案例:上传MP3/WAV即得语义标签

开源CLAP音频分类实战案例:上传MP3/WAV即得语义标签 1. 项目概述 今天给大家介绍一个特别实用的AI工具——CLAP音频分类服务。这是一个基于LAION CLAP模型的开源项目,能够让你上传任何音频文件,就能自动识别出里面的内容是什么。 简单来说…...

word简历模板(含范文),免费下载

word简历模板导言 在竞争激烈的求职市场中,一份专业、个性化的简历是叩开理想企业大门的关键。简历不仅是个人经历的罗列,更是能力、潜力与职业规划的集中体现。然而,许多求职者因缺乏经验或模板参考,难以突出自身优势&#xff0…...

Pixel Couplet Gen快速上手:Rust+WASM加速正则解析器性能实测报告

Pixel Couplet Gen快速上手:RustWASM加速正则解析器性能实测报告 1. 项目概览 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。通过ModelScope大模型驱动,这款工具将中国传统的春联创作带入了数字时代,特别采用…...