【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解

2023-05-16

棋盘格法是摄像机标定中常用的一种方法,在使用该方法时需要对棋盘格的角点进行检测。opencv中封装了一个专门用于棋盘格角点检测的函数即cv::findChessboardCorners(),同时,也提供了一个专门用于绘制棋盘格角点的函数cv::drawChessboardCorners()。下面将对这两个函数进行详细的介绍。


1、cv::findChessboardCorners()棋盘格角点检测

该函数的具体调用形式如下:

	bool cv::findChessboardCorners( // 如果找到角点则返回true
		cv::InputArray image, // 输入的棋盘格图像(8UC1或8UC3)
		cv::Size patternSize, // 棋盘格内部角点的行、列数
		cv::OutputArray corners, // 输出的棋盘格角点
		int flags = cv::CALIB_CB_ADAPTIVE_THRESH 
		| cv::CALIB_CB_NORMALIZE_IMAGE
	);

第一个参数是输入的棋盘格图像(可以是8位单通道或三通道图像)。

第二个参数是棋盘格内部的角点的行列数(注意:不是棋盘格的行列数,如下图棋盘格的行列数分别为4、8,而内部角点的行列数分别是3、7,因此这里应该指定为cv::Size(3, 7))。



第三个参数是检测到的棋盘格角点,类型为std::vector<cv::Point2f>。

第四个参数flag,用于指定在检测棋盘格角点的过程中所应用的一种或多种过滤方法,可以使用下面的一种或多种,如果都是用则使用OR:

cv::CALIB_CB_ADAPTIVE_THRESH:cv::findChessboardCorners()默认的阈值化处理基于平均亮度,如果该标志指定,则使用自适应滤波(自适应滤波见 

OpenCV3中的阈值化操作——cv::threshold()与cv::adaptiveThreshold()详解

)。

cv::CALIB_CB_NORMALIZE_IMAGE:阈值化前使用cv::equalizeHist()进行直方图均衡化处理。

cv::CALIB_CB_FILTER_QUADS:

cv::CALIB_CV_FAST_CHECK:


当然,找到的角点还需要使用cv::cornerSubPix()进行精度上的优化(具体请参考OpenCV3中的角点检测——cv::goodFeaturesToTrack()与cv::cornerSubPix()详解)。


2、cv::drawChessboardCorners()棋盘格角点的绘制

cv::drawChessboardCorners()的具体调用形式如下:

	void cv::drawChessboardCorners(
		cv::InputOutputArray image, // 棋盘格图像(8UC3)即是输入也是输出
		cv::Size patternSize, // 棋盘格内部角点的行、列数
		cv::InputArray corners, // findChessboardCorners()输出的角点
		bool patternWasFound // findChessboardCorners()的返回值
	);


第一个参数是棋盘格图像(8UC3)。

第二个参数是棋盘格内部角点的行、列,和cv::findChessboardCorners()指定的相同。

第三个参数是检测到的棋盘格角点。

第四个参数是cv::findChessboardCorners()的返回值。


下面是棋盘格检测与绘制的测试代码

	cv::Mat image_color = cv::imread("chessboard.png", cv::IMREAD_COLOR);

	cv::Mat image_gray;
	cv::cvtColor(image_color, image_gray, cv::COLOR_BGR2GRAY);

	std::vector<cv::Point2f> corners;

	bool ret = cv::findChessboardCorners(image_gray,
										 cv::Size(3, 7),
										 corners,
										 cv::CALIB_CB_ADAPTIVE_THRESH |
										 cv::CALIB_CB_NORMALIZE_IMAGE);


	//指定亚像素计算迭代标注
	cv::TermCriteria criteria = cv::TermCriteria(
		cv::TermCriteria::MAX_ITER + cv::TermCriteria::EPS,
		40,
		0.1);

	//亚像素检测
	cv::cornerSubPix(image_gray, corners, cv::Size(5, 5), cv::Size(-1, -1), criteria);
	
	//角点绘制
	cv::drawChessboardCorners(image_color, cv::Size(3, 7), corners, ret);

	cv::imshow("chessboard corners", image_color);
	cv::waitKey(0);

	return;


检测和绘制的结果如下:



2017.04.07

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解 的相关文章

  • ubuntu安装opencv3.4.13的血与泪(一些坑)

    只提tips xff0c 不做教程 xff1a 0 darknet中出现stream stop xff01 一定先安装ffmpeg conda install c conda forge ffmpeg 并在编译时进行 D xff0c 参考d
  • Opencv3.4.11与VS2015配置

    参考文章 OpenCV学习笔记 xff08 一 xff09 OpenCV3 1 0 43 VS2015开发环境配置 https www cnblogs com linshuhe p 5764394 html 跟着一步一步来就没问题 xff0
  • opencv3/C++ 使用Tracker进行简单目标跟踪

    简介 MIL TrackerMIL 以在线方式训练分类器将对象与背景分离 多实例学习避免鲁棒跟踪的漂移问题 OLB TrackerBoosting 基于AdaBoost算法的在线实时对象跟踪 分类器在更新步骤中使用周围背景作为反例以避免漂移
  • OpenCV3.2+VS2013+Tesseract3.02.02配置

    分享一下Tesseract3 02 02版本在Windows下的配置 我的环境VS2013 43 win8 64bit 43 OpenCV3 2 需要下载 xff1a tesseract orc setup 3 02 02 exe和tess
  • 【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++

    实现目标 xff08 1 xff09 用鼠标在图中框选矩形目标 xff0c 然后保存框选的图片 xff1b xff08 2 xff09 鼠标拖动过程中要求显示框的线条以及鼠标当前像素点信息 xff08 坐标和RGB值 xff09 xff1b
  • 树莓派3B+安装c++版本opencv3.4.1,配置开发环境以及注意事项

    树莓派3B 43 安装c 43 43 版本opencv3 4 1 xff0c 配置开发环境以及注意事项 树莓派3B 43 ubuntu mate系统的安装 树莓派 xff0c Raspberry Pi xff0c 是一个只有信用卡大小的微型
  • Jetson Xavier NX 配置opencv3.4.5

    主要参考Jetson Xavier NX安装opencv3 x以及踩过的坑 xff0c 纪录下自己的错误 下载opencv3 4 5 链接 xff1a https pan baidu com s 17mASm87RNbgfmM 31vlxb
  • Ubuntu Anaconda 安装tensorflow及opencv3.2.0

    教程已更新 xff0c 请参照http blog csdn net yjy728 article details 78826447 一 安装Anaconda windows只支持python3 5 X xff0c ubuntu下直接下最新版
  • opencv3.2安装opencv_contrib

    opencv3 2 增加opencv contrib组件 之前在ubuntu16 04下安装caffe和opencv3 2 xff0c 由于需要需要使用opencv contrib组件 xff0c 在安装中遇到一些问题 在已安装好openc
  • 安卓java c++ opencv3.4 视频实时传输

    安卓java c 43 43 视频实时传输 要做一个视频实时传输并别图像追踪识别的项目 本项目先采用TCP建立链接 xff0c 然后在用UDP实时传输 xff0c 用压缩图像帧内为JPEG的方式 xff0c 加快传输速率 下图是转的 我采用
  • ubuntu 下的opencv3的下载与实现简单功能

    看自己用户的名字 whoami 例子1 xff1a include lt stdio h gt include lt opencv2 opencv hpp gt using namespace std using namespace cv
  • 配置opencv3.1+caffe

    为了配置caffe做reid这是官方的入口 caffe reid https github com zlmzju caffe tree reid caffe install http caffe berkeleyvision org ins
  • 【OpenCV3.2】Detection of ArUco Markers

    姿态估计 xff08 Pose estimation xff09 在 计算机视觉 领域扮演着十分重要的角色 xff1a 机器人 导航 增强现实以及其它 这一过程的基础是找到现实世界和图像投影之间的对应点 这通常是很困难的一步 xff0c 因
  • 基于OpenCV3.0的车牌识别系统设计(二)--车牌提取

    写在前面的话 上一篇开篇博文写好之后找女朋友看了一下 xff0c 希望她提一点建设性建议 结果她很委婉的告诉我 xff0c 写的还行就是太表面了 xff0c 告诉我要注意细节的描述与具体的实现过程与原理等等 其实我只是想骗她看一下增加一下点
  • 【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解

    棋盘格法是摄像机标定中常用的一种方法 xff0c 在使用该方法时需要对棋盘格的角点进行检测 opencv中封装了一个专门用于棋盘格角点检测的函数即cv findChessboardCorners xff0c 同时 xff0c 也提供了一个专
  • Jetson Xavier NX安装opencv3.x以及踩过的坑

    Jetson Xavier NX默认安装的是opencv4 x xff0c 在很多项目中其与opencv3 x xff0c 其中opencv3与opencv4中有部分函数是完全不同的 xff08 例如点一些Point的定义 xff0c Cv
  • 【AI】Ubuntu14.04安装OpenCV3.2.0

    在ubuntu14 04系统上安装OpenCV3 2 0 环境要求 GCC 4 4 x or later CMake 2 8 7 or higher Git if failed you can replace it with git cor
  • ubuntu下安装OpenCV3.4.1及其contrib模块

    在github上找到两个文件下载并解压 xff0c 将contrib部分解压到OpenCV3 4 1文件夹中 然后执行安装 xff1a mkdir build amp amp cd build cmake D OPENCV EXTRA MO
  • OpenCV图像增强(二)——Retinex图像增强

    前言 1 Retinex图像增强是一种高动态范围图像的新色调映射技术 而基础理论是 物体的颜色是由物体对长波 红色 中波 绿色 短波 蓝色 光线的反射能力来决定的 而不是由反射光强度的绝对值来决定的 物体的色彩不受光照非均匀性的影响 具有一
  • ubuntu opencv3 安装

    安装完 ubuntu 系统之后立马安装此库 否则后面安装的时候会造成软件包冲突 apt get libopencv dev 在 usr include opencv2 目录下有所有的头文件 opencv2 modules hpp 文件夹里有

随机推荐