opencv findChessboardCorners findCirclesGrid 代码实例和运行结果

42 篇文章 2 订阅
28 篇文章 0 订阅

代码托管:

https://github.com/sofiathefirst/imagesCpp/blob/master/01showImg/cali_api.cpp

#include <iostream>
#include <sstream>
#include <string>
#include <ctime>
#include <cstdio>

#include <opencv2/core.hpp>
#include <opencv2/core/utility.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/calib3d.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>

using namespace cv;
using namespace std;

int main() {

	VideoCapture camCapLeft(0);
	int i = 0;
	camCapLeft.set(cv::CAP_PROP_FRAME_WIDTH, 10000);
	camCapLeft.set(cv::CAP_PROP_FRAME_HEIGHT, 10000);
	Size s(3, 4);
	cout << s;
	s.height = 6;
	s.width = 9;
	cout << s;
	int w = camCapLeft.get(CV_CAP_PROP_FRAME_WIDTH);
	int h = camCapLeft.get(CV_CAP_PROP_FRAME_HEIGHT);
	bool found = false;
	cv::Mat img1;
	vector<Point2f> pointBuf;
	int chessBoardFlags = CALIB_CB_ADAPTIVE_THRESH | CALIB_CB_NORMALIZE_IMAGE;
	//    int chessBoardFlags = cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_NORMALIZE_IMAGE | cv::CALIB_CB_FAST_CHECK;
	printf("cam Resolution%d,%d\n", w, h);
	vector<vector<Point2f> > imagePoints;
	Mat cameraMatrix, distCoeffs;
	vector<Mat> rvecs, tvecs;
	Size boardSize(6, 9);
	float squareSize = 3;
	while (camCapLeft.isOpened()) {
		camCapLeft >> img1;
		found = false;
		found = findChessboardCorners(img1, boardSize, pointBuf,
				chessBoardFlags);
		//found = findCirclesGrid( img1,boardSize, pointBuf,cv::CALIB_CB_SYMMETRIC_GRID,cv::SimpleBlobDetector::create());
		if (found) {
			cv::drawChessboardCorners(img1, boardSize, cv::Mat(pointBuf),
					found);
			imagePoints.push_back(pointBuf);
		}
		imshow("L", img1);
		char c = cv::waitKey(1);

	//std::cout<<"zize:"<<(globalData->objectPoints.size())<<std::endl<<(globalData->imagePoints).size()<<"\nend\n";
             //       globalData->totalAvgErr =
                      //      cv::calibrateCamera(globalData->objectPoints, globalData->imagePoints,
                       //                             globalData->imageSize, globalData->cameraMatrix,
                       //                             globalData->distCoeffs, cv::noArray(), cv::noArray(),
                       //                             globalData->stdDeviations, cv::noArray(), globalData->perViewErrors,
                       //                             calibrationFlags, solverTermCrit);
		if (c > 'a' && c < 'z')
			printf("c=%c\n", c);
		//imwrite(name, img1);
	}

	camCapLeft.release();
	return 0;
}

非对称4*11

对称4*5

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值