findChessboardCorners

对着findChessboardCorners这个函数,最容易出错的地方,就是param patternSize这个参数了,根据OpenCV文档的定义

Number of inner corners per a chessboard row and column

是棋盘的内部角点个数,而非棋盘中黑白块的个数


从上面可以看出,影像的行数是6,而非白块+黑块的大小7.(内部角点)

测试用例

#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>  //头文件
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/optflow/motempl.hpp>
using namespace cv;  //包含cv命名空间
using namespace std;
using namespace motempl;
//string filename="C:\\Users\\Administrator\\Desktop\\标准测试图片"
int main()
{
	string filename1 = "C:\\Users\\Administrator\\Desktop\\标准测试图片\\2Bfo4.png";
	Mat img = imread(filename1, IMREAD_GRAYSCALE);
	vector<Point2f> corner;
	bool result=findChessboardCorners(img, Size(7, 7), corner,CALIB_CB_ADAPTIVE_THRESH|CALIB_CB_NORMALIZE_IMAGE);
	cornerSubPix(img, corner, Size(11, 11), Size(-1, -1), TermCriteria(TermCriteria::EPS | TermCriteria::MAX_ITER, 20, 0.03));
	drawChessboardCorners(img, Size(9, 6), corner, result);
	imshow(filename1, img);
	waitKey(0);
	return 0;
}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: findchessboardcorners 失败可能是由于以下原因导致的: 1. 图像质量不佳,如模糊、噪声等,导致无法正确检测角点。 2. 棋盘格尺寸或布局不正确,导致无法正确检测角点。 3. 棋盘格在图像中的角度或旋转角度不正确,导致无法正确检测角点。 4. 棋盘格在图像中的位置不正确,导致无法正确检测角点。 5. 算法参数设置不正确,导致无法正确检测角点。 需要根据具体情况进行分析和调整,以解决问题。 ### 回答2: findChessboardCorners指的是在一个棋盘图像中寻找棋盘的角点。如果该函数无法成功找到角点,可能有几个常见的原因。 首先,棋盘图像本身可能存在问题。如果棋盘的颜色或图案模式不明显或变形,findChessboardCorners函数可能会因为无法正确地检测到角点而失败。解决方法可以尝试使用清晰、明确的棋盘图像,或者增加图像的对比度。 其次,函数的参数可能设置不当。可以尝试调整函数的参数,例如棋盘格尺寸、角点的最小/最大间隔等,以适应不同的棋盘图像。 此外,光照条件可能对findChessboardCorners的成功率产生影响。如果图像的光照不均匀,或者存在阴影、反射等情况,将会干扰角点的检测。可以尝试改变光照条件或使用合适的图像增强算法来处理这些问题。 最后,图像的分辨率也是一个需要考虑的因素。较低的分辨率可能导致角点无法被准确地检测到。如果可能的话,可以尝试使用高分辨率的图像来提高findChessboardCorners的成功率。 总之,当findChessboardCorners函数失败时,我们应该先检查棋盘图像本身、函数参数设置、光照条件和图像分辨率等因素,并根据具体情况进行相应的调整和处理,以提高函数的成功率。 ### 回答3: findchessboardcorners函数是OpenCV图像处理库提供的一个用于在棋盘图像中找到角点的函数。当使用该函数时,可能会出现找不到角点的情况,即函数返回失败。 造成findchessboardcorners函数失败的原因可以有多种,以下是常见的几种可能: 1. 图像质量不佳:如果图像的分辨率较低、存在模糊、噪音或者光照不均匀等问题,都可能导致函数失败。此时可以尝试使用更高质量的图像进行处理,或者对图像进行预处理,例如增加对比度、降噪等。 2. 棋盘图案不清晰:如果棋盘图案不够清晰或者棋盘方格间隔不够明显,函数可能无法正确识别角点。此时可以尝试使用更清晰的棋盘图像,或者调整摄像机的对焦距离和角度,以便更好地捕捉到棋盘角点。 3. 参数设置不正确:findchessboardcorners函数接受一些参数,如棋盘格尺寸、角点数量等。如果这些参数设置不正确,函数可能无法正确找到角点。需要根据实际情况调整这些参数,以便更好地适应棋盘图像。 4. 角点布局不规则:如果使用的棋盘图案不是标准的8x8或者9x6角点布局,函数可能无法正确找到角点。此时需要确保使用的棋盘图案与函数期望的角点布局一致。 5. 其他因素:除了上述原因外,还有一些其他因素可能导致findchessboardcorners函数失败,例如摄像机畸变、拍摄角度不当等。在遇到函数失败时,可以仔细检查这些因素,并逐步排除可能的问题。 综上所述,当findchessboardcorners函数失败时,应该仔细检查图像质量、棋盘图案、参数设置等因素,并逐步进行调整,以找到合适的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值