生活随笔
收集整理的这篇文章主要介绍了
利用opencv霍夫变检测中国象棋的外形——圆
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
今天将opencv的霍夫变换修改并优化了一下,就是先预处理,切割、二值化、去噪之后进行霍夫变换,效果还不错,从识别70多个圆,慢慢修改到识别32个圆。
效果如下:
原理毛星云写的就很好,他的文章链接:https://blog.csdn.net/poem_qianmo/article/details/26977557
下面附上代码:
#include "stdafx.h"
#include "core/core.hpp"
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <set>
#include<stdio.h>#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>
#include <opencv2/ml/ml.hpp>
#include "opencv2/ml/ml.hpp"
#include <time.h>
#include <ctime>
#include <string>
using namespace std;
using namespace cv;
int main()
{Mat srcImage = imread(
"3.jpg"); Mat midImage, dstImage;namedWindow(
"【原始图】",
0);imshow(
"【原始图】", srcImage);Rect rect(
600,
0,
1205,
1035); Mat image_cut = Mat(srcImage, rect); Mat image_copy = image_cut.clone(); namedWindow(
"分割后的图片",
0);imshow(
"分割后的图片", image_copy);cvtColor(image_copy, midImage, CV_BGR2GRAY);threshold(midImage, midImage,
128,
255, CV_THRESH_BINARY | CV_THRESH_OTSU);blur(midImage, midImage, Size(
3,
3));
vector<Vec3f> circles;
HoughCircles(midImage, circles, CV_HOUGH_GRADIENT,
1.5,
35,
100,
25,
36,
43);
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]);
cout <<
"圆心 " << i <<
"= " << center <<
";\n" << endl;
cout <<
"半径= " << i <<
"= " << radius <<
";\n" << endl;circle(midImage, center,
3, Scalar(
0,
255,
0), -
1,
8,
0);circle(midImage, center, radius, Scalar(
155,
50,
255),
3,
8,
0);circle(image_copy, center,
3, Scalar(
0,
255,
0), -
1,
8,
0);circle(image_copy, center, radius, Scalar(
155,
50,
255),
3,
8,
0);}
cout <<
"共检测到圆" << circles.size() <<
" 个圆" <<
";\n" << endl;namedWindow(
"【二值化后效果图】",
0);imshow(
"【二值化后效果图】", midImage);namedWindow(
"【彩色效果图】",
0);imshow(
"【彩色效果图】", image_copy);waitKey(
0);
return 0;
}
总结
以上是生活随笔为你收集整理的利用opencv霍夫变检测中国象棋的外形——圆的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。