发布于2019-10-29 16:59 阅读(1815) 评论(0) 点赞(2) 收藏(5)
void anomalyRoi(Mat &src, Mat &dst)
{
Mat original = src.clone();
//高斯滤波
GaussianBlur(original, original, Size(3, 3), 11, 11, 4);
//灰度化
cvtColor(original, original, COLOR_RGB2GRAY);
//二值化
Mat threshold_image;
threshold(original, threshold_image, 90, 225, 3);
//形态学操作,Size的第个值是水平方向,第二值是垂直方向
Mat morphologyKernel = getStructuringElement(MORPH_RECT, Size(1, 3));
//闭运算
morphologyEx(threshold_image, threshold_image, CV_MOP_CLOSE, morphologyKernel);
Canny(threshold_image, threshold_image, 45, 45 * 3);
imshow("Canny", threshold_image);
vector<vector<Point>> contours;
vector<Vec4i> hireachy;
//找轮廓
findContours(threshold_image, contours, hireachy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE, Point(-1, -1));
int flag_count = 0;
///vector< vector<Point>> contours_poly(contours.size());
//建一个全黑的图像
Mat show_threImage = Mat::zeros(threshold_image.size(), CV_8UC3);
double s_area = 0;
for (size_t i = 0; i < contours.size(); i++)
{
//在全黑的图像上画轮廓
drawContours(show_threImage, contours, static_cast<int>(i), Scalar(255, 255, 255), 2, 8, hireachy, 0, Point());
//利用面积进行判断是否为最大区域
double area = contourArea(contours[i]);
if (s_area < area)
{
s_area = area;
}
else
{
s_area = s_area;
}
if (area == s_area)
{
flag_count = static_cast<int>(i);
}
else
{
flag_count = flag_count;
}
}
imshow("Draw_Image_Contours", show_threImage);
Mat gray(src.size(), src.type(), Scalar(0, 0, 0));
drawContours(gray, contours, flag_count, Scalar(255, 255, 255), 4, 8, hireachy, 0, Point());
namedWindow("gray", 0);
imshow("gray", gray);
//为了找内部的一个漫水填充的种子点
Rect s = boundingRect(contours[flag_count]);
//黑色区域变成白色,遇到白色区域停止
floodFill(gray, Point(s.x + s.width / 2, s.y + s.height / 2), Scalar(255,255,255));
bitwise_and(src, gray, dst);
}
作者:头疼不是病
链接:https://www.pythonheidong.com/blog/article/147690/8c6fc7b23af3f6d5abc3/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!