OpenCV學習記錄21

一 學習內容

1 霍夫變換用於圓的檢測

 

二 代碼調試

#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>

using namespace cv;
using namespace std;
char Figure1[] = "Figure1";
char Figure2_gray[] = "Figure2_gray";
char Figure3_blur[] = "Figure3_blur";
char Figure4_circle[] = "Figure4_circle";
int main() {
	Mat src,dst_gray, dst_blur,dst_mid,dst_Circle;
	src = imread("e:/2 opencv_projects_zl/Hua5.jpg");
	if (src.empty()) {
		printf("LoadError...\n");
		return -1;
	}
	namedWindow(Figure1,CV_WINDOW_AUTOSIZE);
	imshow(Figure1,src);
	//學習新內容:霍夫變換---圓的檢測
	//1. 轉化爲灰度圖像
	cvtColor(src,dst_gray,CV_BGR2GRAY);
	namedWindow(Figure2_gray, CV_WINDOW_AUTOSIZE);
	imshow(Figure2_gray, dst_gray);
	//2. (高斯濾波)中值濾波
	//GaussianBlur(dst_gray,dst_blur,Size(3,3),0,0);
	medianBlur(dst_gray, dst_blur, 3);
	namedWindow(Figure3_blur, CV_WINDOW_AUTOSIZE);
	imshow(Figure3_blur, dst_blur);


	//3. 霍夫圓檢測
	vector<Vec3f>pCircles;
	HoughCircles(dst_blur, pCircles,CV_HOUGH_GRADIENT,1,10,100,10,6,8);//最後兩個參數用於控制圓半徑的取值範圍
	Scalar color = Scalar(50,50,200);
	for (size_t i = 0; i < pCircles.size(); i++)
	{
		Vec3f Hcircle = pCircles[i];
		circle(src,Point(Hcircle[0], Hcircle[1]), Hcircle[2],color,2,LINE_4);
	}
	namedWindow(Figure4_circle, CV_WINDOW_AUTOSIZE);
	imshow(Figure4_circle, src);

	waitKey(0);
	return 0;
}

三 調試結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章