opencv3寻找最小包围圆形在图像中的应用-滚动条
2015-10-20 00:16
639 查看
#include<opencv2/opencv.hpp> #include<iostream> #include<vector> using namespace cv; using namespace std; int g_nMinThred = 128, g_nMaxThred = 255; int g_nThick = 0; int main() { Mat srcImage = imread("group.jpg"); namedWindow("【原图】", 0); imshow("【原图】", srcImage); createTrackbar("minthred", "【原图】", &g_nMinThred, 255, 0); createTrackbar("maxthred", "【原图】", &g_nMaxThred, 255, 0); createTrackbar("thick", "【原图】", &g_nThick, 100, 0); //先对图像进行空间的转换(为了之后要提取二值图像) Mat grayImage; cvtColor(srcImage, grayImage, CV_BGR2GRAY); //对图像进行滤波,达到较好的效果 GaussianBlur(grayImage, grayImage, Size(3, 3), 0, 0); imshow("【滤波后的图像】", grayImage); char key; while (1) { //用边缘检测的方式获取二值图像 Mat cannyImage; Canny(grayImage, cannyImage, g_nMinThred, g_nMaxThred, 3); //在二值图像中提取轮廓 vector<vector<Point>> contours; vector<Vec4i> hierarchy; findContours(cannyImage, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0)); //对每个轮廓的点集 找逼近多边形 vector<vector<Point>> approxPoint(contours.size()); for (int i = 0; i < (int)contours.size(); i++) { //在生成的那些随机点中寻找最小包围圆形 Point2f center; float radius; minEnclosingCircle(contours[i], center, radius); //根据得到的圆形和半径 绘制圆形 circle(cannyImage, static_cast<Point>(center), (int)radius , Scalar(255, 255, 255), g_nThick + 1); } imshow("【绘制后的图像】", cannyImage); key = waitKey(1); if (key == 27) break; } return 0; }
相关文章推荐
- 01_基于应用拆分的技术架构
- 01_基于应用拆分的技术架构
- opencv3寻找最小包围圆形-minEnclosingCircle函数
- opencv3寻找最小包围矩形在图像中的应用-滚动条
- opencv3寻找最小包围矩形-minAreaRect函数
- 【Linux命令】文件和目录操作命令
- opencv3实现分水岭算法-watershed函数
- opencv3矩的计算-在图像中的应用-滚动条
- opencv3矩的计算-在图像中的应用
- Linux之split命令详解
- 表单提交错误后返回内容消失问题的解决方法(PHP网站)
- CXF+Spring+Tomcat简明示例
- AOP的半自动代理 及 缺点
- Linux常见的挂载目录说明
- Linux中mysql忘记密码,或者登录不上,等等,都可使用以下方式
- Linux安装软件
- svnserve.conf: Option expected的问题解决方法
- nginx整合tomcat实现域名泛解析
- linux 开机自动清空/tmp目录是怎么回事
- linux下安装7z命令及7z命令的使用