opencv实现棋盘格检测

 更新时间:2022年08月01日 14:19:46   作者:老王隔壁的秃头大宝贝  
这篇文章主要为大家详细介绍了opencv实现棋盘格检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了opencv实现棋盘格检测的具体代码,供大家参考,具体内容如下

代码:

#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>  
#include <opencv2/xfeatures2d.hpp>
#include <opencv2/optflow/motempl.hpp>
using namespace cv;  
using namespace std;
/*
棋盘格角点检测应用
*/
 
int main()
{
    //***********************************  1  ****************************************************************
    /*Mat img = imread("C:\\Users\\H\\Desktop\\13.png", IMREAD_GRAYSCALE);
    vector<Point2f> corner;
    bool result = findChessboardCorners(img, Size(5, 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(5, 7), corner, result);
    imshow("src", img);*/
    //**********************************************************************************************************
 
 
    // **********************************  2  **************************************************
    //读入图像
    Mat src = imread("C:\\Users\\H\\Desktop\\13.png", IMREAD_COLOR);
    Mat image_gray;
    cvtColor(src, image_gray, COLOR_BGR2GRAY);
    //定义存储角点的容器
    vector<Point2f> corners;
    //进行角点检测
    bool ret = findChessboardCorners(image_gray,
                                        Size(5, 7), // 棋盘格每列点数和每一行点数
                                        corners,    // 输出检测到角点的数组
                                        CALIB_CB_ADAPTIVE_THRESH |
                                        CALIB_CB_NORMALIZE_IMAGE);
 
    //指定亚像素计算迭代标注
    TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS,
                                        40,   // 要计算的最大迭代次数或元素数
                                        0.1); // 迭代算法停止时所需的精度或参数变化
    //亚像素检测
    cornerSubPix(image_gray, 
                    corners, 
                    Size(5, 5), //搜索窗口大小
                    Size(-1, -1), 
                    criteria);
    //角点绘制
    drawChessboardCorners(src,
                            Size(5, 7), //棋盘格每列点数和每一行点数
                            corners, 
                            ret);
    cout << "corner: " << corners << endl;
 
    //在原图中绘制点
    Point pt;
    pt.x = corners[9].x;
    pt.y = corners[9].y;
    circle(src, pt, 4, Scalar(0, 255, 0),-1);
 
    imshow("chessboard corners", src);
    // ****************************************************************************************
 
    waitKey(0);
 
    return 0;
}

结果展示:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言中结构体struct编写的一些要点解析

    C语言中结构体struct编写的一些要点解析

    这篇文章主要介绍了C语言中结构体struct编写的一些要点解析,谈到了结构体的声明和指针指向等重要知识点,需要的朋友可以参考下
    2016-04-04
  • 十个C++恶搞朋友的代码合集

    十个C++恶搞朋友的代码合集

    这篇文章主要为大家整理了十个C++中可以恶搞朋友的代码合集(注意!从第五个开始为危险/永久性程序,请慎重使用),感兴趣的小伙伴可以收藏一下
    2023-02-02
  • VC++实现输出GIF到窗体并显示GIF动画的方法

    VC++实现输出GIF到窗体并显示GIF动画的方法

    这篇文章主要介绍了VC++实现输出GIF到窗体并显示GIF动画的方法,需要的朋友可以参考下
    2014-07-07
  • 详解C++中二进制求补运算符与下标运算符的用法

    详解C++中二进制求补运算符与下标运算符的用法

    这篇文章主要介绍了C++中二进制求补运算符与下标运算符的用法,是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • QT5中使用SQLite的实现方法

    QT5中使用SQLite的实现方法

    SQLite是一款开源轻量级的数据库软件,本文主要介绍了QT5中使用SQLite的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C语言文件操作的入门详解教程

    C语言文件操作的入门详解教程

    这篇文章主要给大家介绍了关于C语言文件操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 浅谈C++有理数的表达和计算

    浅谈C++有理数的表达和计算

    这篇文章主要为大家详细介绍了C++有理数的表达和计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 详解C++中常用的四种类型转换方式

    详解C++中常用的四种类型转换方式

    这篇文章主要为大家详细介绍了C++中常用的四种类型转换方式:static_cast<Type>、dynamic_cast<Type>、const_case<Type>和reinterpret_cast,感兴趣的可以了解一下
    2022-08-08
  • C++并查集亲戚(Relations)算法实例

    C++并查集亲戚(Relations)算法实例

    这篇文章主要介绍了C++并查集亲戚(Relations)算法,实例分析了并查集亲戚算法的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • 数据结构之数组翻转的实现方法

    数据结构之数组翻转的实现方法

    这篇文章主要介绍了数据结构之数组翻转的实现方法的相关资料,这里用几种实现方法来实现这样的功能,需要的朋友可以参考下
    2017-10-10

最新评论