opencv實現(xiàn)棋盤格檢測
更新時間:2022年08月01日 14:19:46 作者:老王隔壁的禿頭大寶貝
這篇文章主要為大家詳細介紹了opencv實現(xiàn)棋盤格檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了opencv實現(xiàn)棋盤格檢測的具體代碼,供大家參考,具體內(nèi)容如下
代碼:
#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), // 棋盤格每列點數(shù)和每一行點數(shù)
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?corners, ? ?// 輸出檢測到角點的數(shù)組
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?CALIB_CB_ADAPTIVE_THRESH |
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?CALIB_CB_NORMALIZE_IMAGE);
?
?? ?//指定亞像素計算迭代標注
?? ?TermCriteria criteria = TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS,
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?40, ? // 要計算的最大迭代次數(shù)或元素數(shù)
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?0.1); // 迭代算法停止時所需的精度或參數(shù)變化
?? ?//亞像素檢測
?? ?cornerSubPix(image_gray,?
?? ??? ??? ??? ??? ?corners,?
?? ??? ??? ??? ??? ?Size(5, 5), //搜索窗口大小
?? ??? ??? ??? ??? ?Size(-1, -1),?
?? ??? ??? ??? ??? ?criteria);
?? ?//角點繪制
?? ?drawChessboardCorners(src,
?? ??? ??? ??? ??? ??? ??? ?Size(5, 7), //棋盤格每列點數(shù)和每一行點數(shù)
?? ??? ??? ??? ??? ??? ??? ?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;
}結果展示:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C語言數(shù)組長度的計算方法實例總結(sizeof與strlen)
數(shù)組一旦創(chuàng)建,程序運行期間,長度不可改變,下面這篇文章主要給大家介紹了關于C語言數(shù)組長度的計算方法,主要利用的是sizeof與strlen,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-06-06
c++中#include <>與#include""的區(qū)別詳細解析
<>先去系統(tǒng)目錄中找頭文件,如果沒有在到當前目錄下找。所以像標準的頭文件 stdio.h、stdlib.h等用這個方法2013-10-10

