简单的形态学处理流程
来源:互联网 发布:离线 词典 知乎 编辑:程序博客网 时间:2024/06/01 07:47
简单的形态学处理流程–标出图中硬币的位置
通过一个简单的例子——找出图像中的硬币轮廓,来简单的介绍一下形态学处理的流程。
下面是例子用到的图片:
流程
灰度化—cvtColor(sourceImage, grayImage, CV_BGR2GRAY);
阈值化—threshold(grayImage, thresholdImage, 100, 255, 0);
形态学处理 — morphologyEx()
找到并标出轮廓— findContours() 和 drawContours()
代码
#include <iostream>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;void main(){ //【1】 Mat sourceImage = imread("coin.jpg"); if (sourceImage.empty()){ cout << "can't grab a picture " << endl; return; } imshow("source image", sourceImage); //【2】 转换为灰度图 Mat grayImage; cvtColor(sourceImage, grayImage, CV_BGR2GRAY); imshow("gray image", grayImage); //【3】 阈值化 Mat thresholdImage; threshold(grayImage, thresholdImage, 100, 255, 0); imshow("threshold image", thresholdImage); //【4】 通过开闭运算,进行形态学处理 Mat element1 = getStructuringElement(MORPH_ELLIPSE,Size(15, 15)); //将硬币的内部凸显出来 morphologyEx(thresholdImage, thresholdImage, MORPH_CLOSE, element1); Mat element2 = getStructuringElement(MORPH_RECT ,Size(5, 5)); //滤掉周围的小点 morphologyEx(thresholdImage, thresholdImage, MORPH_OPEN, element2); imshow("filtered image", thresholdImage); //【5】 找到轮廓并标出 vector<vector<Point>> contours; vector<Vec4i> hierarchy; findContours(thresholdImage, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0,0)); RNG g_rng(999999); for (int i = 0; i< contours.size() ; i++) { Scalar color = Scalar(g_rng.uniform(0, 255), g_rng.uniform(0, 255), g_rng.uniform(0, 255));//任意值 drawContours(sourceImage, contours, i, color, 2, 8, hierarchy, 0, Point()); } imshow("finished", sourceImage); waitKey(0); return;}
结果截图:
阈值化后
形态学处理后
最后结果
0 0
- 简单的形态学处理流程
- 图像的形态学处理
- 形态学的图像处理
- 图像的形态学处理
- 图像的形态学处理总结
- 图像处理的形态学操作
- 基于matlab的形态学处理
- 图像处理--形态学的应用
- 灰度图像的形态学处理
- 形态学处理
- 形态学处理
- 形态学处理
- 形态学处理
- 形态学处理
- 腐蚀,膨胀,opencv的形态学处理
- 最全面的图像形态学处理
- OpenCV对形态学的运算处理
- 图像操作的形态学处理MATLAB
- 多个图片文件夹生成一个大css文件的方法
- hdu 1086(判断两线段是否相交)
- <link rel="canonical" href="www.home.com">
- TCP协议的三次握手和四次挥手
- 用Python做科学计算
- 简单的形态学处理流程
- mysql水平切分联查的问题
- BufferedReader & BufferedWriter
- 关于c#的委托
- Vue折腾记-(1)初探
- 几个php算法练习题
- 001-实现Unity3d通过Http协议 向PHP服务器发送和解析Json格式数据 并进行测试
- 栈代码
- iOS 使用AFNetworking遇到错误 Request failed: unacceptable content-type: text/html