cv.drawChessboardCorners 是 OpenCV 中用于可视化棋盘格角点检测

cv.drawChessboardCorners 是 OpenCV 中用于可视化棋盘格角点检测

cv.drawChessboardCorners 是 OpenCV 中用于可视化棋盘格角点检测结果的核心函数,常配合 cv.findChessboardCorners 使用,主要用于相机标定、立体视觉等场景的结果验证。

函数基本信息

函数原型(Python 版)

cv.drawChessboardCorners(image, patternSize, corners, patternWasFound) → image

参数说明

返回值

绘制了角点的图像(与输入 image 是同一对象,原地修改)。

核心功能

完整检测到角点:绘制所有角点,并连接成棋盘格网格(彩色线条);

未完整检测到角点:仅绘制检测到的零散角点(无网格);

角点以红色小圆点标记,网格以彩色线条连接(便于直观验证检测效果)。

使用步骤(完整示例)

完整代码(棋盘格角点检测 + 可视化)
bash 复制代码
# -*- coding:utf-8 -*-
import cv2 as cv
import sys


if __name__ == '__main__':
    # 读取图像
    image1 = cv.imread('./images/test01.jpg')
    image2 = cv.imread('./images/test02.png')
    if image1 is None or image2 is None:
        print('Failed to read test01.jpg or test02.png.')
        sys.exit()

    # 转为灰度图像
    gray1 = cv.cvtColor(image1, cv.COLOR_BGR2GRAY)
    gray2 = cv.cvtColor(image2, cv.COLOR_BGR2GRAY)

    # 定义数目尺寸
    board_size1 = (9, 6)
    board_size2 = (7, 7)

    # 检测角点
    _, points1 = cv.findChessboardCorners(gray1, board_size1)
    _, points2 = cv.findCirclesGrid(gray2, board_size2)

    # 细化角点坐标
    _, points1 = cv.find4QuadCornerSubpix(gray1, points1, (5, 5))
    _, points2 = cv.find4QuadCornerSubpix(gray2, points2, (5, 5))

    # 绘制角点检测结果
    image1 = cv.drawChessboardCorners(image1, board_size1, points1, True)
    image2 = cv.drawChessboardCorners(image2, board_size2, points2, True)

    # 展示结果
    cv.imshow('Square Result', image1)
    cv.imshow('Circle Result', image2)
    cv.waitKey(0)
    cv.destroyAllWindows()

关键说明

棋盘格准备:需使用黑白相间的棋盘格(如 9x6 内角点对应 10x7 个方格);

亚像素细化:cv.cornerSubPix 是可选步骤,但能大幅提升角点坐标精度(对相机标定至关重要);

检测失败处理:若 ret=False,说明未完整检测到所有角点,需检查图像(如光照、棋盘格完整性)。

常见问题与解决方案

扩展应用

cv.drawChessboardCorners 常与相机标定流程结合:

检测多张棋盘格图像的角点;

用 cv.calibrateCamera 计算内参 / 外参;

用 cv.undistort 校正图像畸变;

绘制角点验证标定结果的准确性。

如果需要相机标定的完整代码示例,可以补充说明,我会进一步完善。

相关推荐
搬砖的小码农_Sky5 小时前
如何用Nvidia Geforce RTX 5060 Ti显卡进行本地Whisper语音转文字任务?
人工智能·ai·whisper·gpu算力
波动几何5 小时前
工作流重构方法技能workflow-refactor
人工智能
nix.gnehc5 小时前
从范式到工程:Plan & Execute + Nacos MCP 构建 AI Agent 的实践之路
人工智能·agent·mcp
工一木子5 小时前
Browser MCP:让 Cursor 直接操控你的真实浏览器
人工智能
测试员周周5 小时前
【Appium 系列】第17节-XMind用例转换 — 从思维导图到 YAML
java·服务器·人工智能·单元测试·appium·测试用例·xmind
ujainu5 小时前
CANN pto-isa:AI 编译为什么需要虚拟指令集
人工智能
AI周红伟5 小时前
通用业务智能体OpenClaw+Skills+RAG+Agent构建案例实操
大数据·人工智能·windows·百度·copilot
Fleshy数模5 小时前
基于 CSV 数据分析的课堂教学问题诊断与改进建议系统
数据库·人工智能·大模型·llm
甲维斯5 小时前
Claude Code 桌面版 和 CLI 自动模式和跳过所有授权!
人工智能
NiceCloud喜云5 小时前
Claude API PDF 文档问答实战:从原生解析到分页引用的完整方案
java·服务器·前端·网络·数据库·人工智能·pdf