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语言实现打印九九乘法表的四种方式小结

    C语言实现打印九九乘法表的四种方式小结

    这篇文章主要为大家介绍了C语言实现打印九九乘法表的四种方式,文中的示例代码讲解详细,简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-07-07
  • C++ Boost Variant示例超详细讲解

    C++ Boost Variant示例超详细讲解

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • linux之sort命令的用法

    linux之sort命令的用法

    sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
    2013-10-10
  • C语言数组长度的计算方法实例总结(sizeof与strlen)

    C语言数组长度的计算方法实例总结(sizeof与strlen)

    数组一旦创建,程序运行期间,长度不可改变,下面这篇文章主要给大家介绍了关于C语言数组长度的计算方法,主要利用的是sizeof与strlen,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • C语言制作表白神器的示例代码

    C语言制作表白神器的示例代码

    这篇文章主要为大家详细介绍了如何利用C语言制作一个简单的表白神器,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解一下
    2023-03-03
  • C语言转义字符实例详解

    C语言转义字符实例详解

    这里主要介绍了C语言的转义字符的知识,并附有示例代码,以便理解,希望对学习 C语言的同学有所帮助
    2016-07-07
  • FFmpeg进阶教程之给视频添加文字水印

    FFmpeg进阶教程之给视频添加文字水印

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,下面这篇文章主要给大家介绍了关于FFmpeg进阶教程之给视频添加文字水印的相关资料,需要的朋友可以参考下
    2022-11-11
  • OpenCV实现简易标定板

    OpenCV实现简易标定板

    这篇文章主要为大家详细介绍了OpenCV实现简易标定板,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • C++中std::tuple和std::pair的高级用法

    C++中std::tuple和std::pair的高级用法

    本文主要介绍了C++标准库中std::pair和std::tuple的使用,包括它们的基本概念、使用场景、区别以及高级用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • c++中#include &lt;&gt;与#include""的区别详细解析

    c++中#include &lt;&gt;与#include""的区别详细解析

    <>先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h等用这个方法
    2013-10-10

最新评论