本程序是一個最簡單的霍夫圓檢測函數的使用案例,剛剛學會的用法,發一下,可以參考,參數啥的可根據圖片調節。
#pragma once
#include<quickopencv.h>
#include<vector>
#include <stdio.h>
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
class QuickDemo {
public:
void ColorSpace_Demo(Mat &image);
};
void QuickDemo::ColorSpace_Demo(Mat &image)
{
Mat gray, hsv, img3;
cvtColor(image, gray, COLOR_BGR2GRAY);
cvtColor(image, hsv, COLOR_BGR2HSV);
//H取值0-180表示顏色 S取值0-255表示飽和度 V0-255表示亮度
namedWindow("huidu", WINDOW_FREERATIO);
imshow("huidu", gray);
GaussianBlur(gray, gray, Size(9, 9), 0, 0);//高斯模糊
medianBlur(gray, gray, 3);//中值濾波
vector<Vec3f> circles;
HoughCircles(gray, circles, HOUGH_GRADIENT, 1, 1, 100,100, 0,00 );
Canny(gray, img3, 50, 100);//邊緣檢測
for (size_t i = 0; i < circles.size(); i++)
{
Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
int radius = cvRound(circles[i][2]);
// circle center
circle(gray, center, 3, Scalar(60, 30, 60), -1, 5, 0);
// circle outline
circle(gray, center, radius, Scalar(0, 60, 60), 3, 3, 0);
}
namedWindow("Hough Circle Transform Demo", WINDOW_FREERATIO);
imshow("Hough Circle Transform Demo",gray);
}
主函數調用
int main(int, char **argv)
{
Mat src = imread("D:/YUAN.jpg");//只能讀八位或者小數圖像,通道順序B G R 取值空間為0-255
if (src.empty())
{
cout<<"cant read";
return -1;
}
QuickDemo qd;
qd.ColorSpace_Demo(src);
waitKey(0);
destroyAllWindows;
return 0;
}
運行效果如下
到此這篇關于C++ opencv霍夫圓檢測使用案例詳解的文章就介紹到這了,更多相關C++ opencv霍夫圓檢測使用內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!