C++ python 找标定圆点

C++ python 找标定圆点_第1张图片

原图

C++ python 找标定圆点_第2张图片

6*9

 

C++ python 找标定圆点_第3张图片

6*6

C++ python 找标定圆点_第4张图片

6*5

为什么不是能检测出任意形状???

如5*X就检测不出来

测试的至少要6*5 而6不是变,否则就检测不到


#include 

using namespace cv;
using namespace std;

int main() {

	// Blob算子参数
	SimpleBlobDetector::Params params;
	/*params.minThreshold = 10;
	params.maxThreshold = 200;*/
	params.maxArea = 10e4;
	params.minArea = 10e1;
	params.filterByArea = true;
	/*params.minDistBetweenBlobs = 5;
	params.filterByInertia = false;
	params.minInertiaRatio = 0.5;*/
	Ptr blobDetector = SimpleBlobDetector::create(params);

	Mat img = imread("circels.jpg",0);
	vector centers;
	Size patternSize(6, 9);

	Mat dst, img_size;
	//resize(img, img_size, Size(round(img.cols * 4), round(img.rows * 4)), 0, 0);
	//resize(img, img_size, Size(img.cols * 4,img.rows * 4));

	threshold(img, img, 120, 255, THRESH_BINARY);


	// 提取圆点特征的圆心
	//bool found = findCirclesGrid(img, patternSize, centers, CALIB_CB_SYMMETRIC_GRID, blobDetector);
	bool found = findCirclesGrid(img, patternSize, centers, CALIB_CB_SYMMETRIC_GRID | CALIB_CB_CLUSTERING, blobDetector);
	Mat cimg;
	cvtColor(img, cimg, COLOR_GRAY2BGR);
	drawChessboardCorners(cimg, patternSize, centers, found);

	double sf = 960. / MAX(img.rows, img.cols);
	resize(img, img, Size(), sf, sf, INTER_LINEAR_EXACT);
	resize(cimg, cimg, Size(), sf, sf, INTER_LINEAR_EXACT);

	imshow("原始图像", img);
	imshow("corners", cimg);

	waitKey();
	return 0;
}

你可能感兴趣的:(机器视觉与图形图像,Opencv/Halcon,opencv)