c# OpenCvSharp 轮廓绘制六步骤你学会了吗(六)

您所在的位置:网站首页 图画轮廓是圆形吗 c# OpenCvSharp 轮廓绘制六步骤你学会了吗(六)

c# OpenCvSharp 轮廓绘制六步骤你学会了吗(六)

2024-07-15 17:14:05| 来源: 网络整理| 查看: 265

轮廓绘制通过下面6个步骤得出轮廓

读取图像 Cv2.ImRead();将图像转换为灰度图像 Cv2.CvtColor();对图像进行模糊处理 滤波Cv2.Blur();边缘检测Canny();查找轮廓Cv2.FindContours();绘制轮廓Cv2.DrawContours();

图例(自娱自乐一下上个扑克牌玩一下)

// 1、读取图像 Mat image = Cv2.ImRead("0.jpg", ImreadModes.Color); // 2、 将图像转换为灰度图像 Mat src_gray = new Mat(); Cv2.CvtColor(image, src_gray, ColorConversionCodes.BGR2GRAY); // 3、 滤波 Cv2.Blur(src_gray, src_gray, new OpenCvSharp.Size(3, 3)); // 4、Canny边缘检测 Mat canny_Image = new Mat(); // 输入、输出、最小阀值、最大阀值 Cv2.Canny(src_gray, canny_Image, 100, 200); //5、查找轮廓 // 寻找轮廓 OpenCvSharp.Point[][] contours; HierarchyIndex[] hierarchy; Cv2.FindContours(canny_Image, out contours, out hierarchy, RetrievalModes.Tree, ContourApproximationModes.ApproxNone, new OpenCvSharp.Point(0, 0)); // 将结果画出并返回结果 Mat dst_Image = Mat.Zeros(canny_Image.Size(), image.Type()); for (int i = 0; i < contours.Length; i++) { // 轮廓的颜色为绿色 Scalar color = new Scalar(0, 255, 0); Cv2.DrawContours(dst_Image, contours, i, color, 2, LineTypes.Link8, hierarchy); } Cv2.ImShow("dst_Image", dst_Image); // 显示图像 Cv2.WaitKey(0); 一、读取图像 Cv2.ImRead();不介绍了 二、将图像转换为灰度图像 Cv2.CvtColor();不介绍了 三、滤波 Cv2.Blur()

用于对图像进行模糊处理。

Cv2.Blur(src, dst, ksize, anchor,borderType,borderValue)

参数解释src输入图像,可以是单通道或多通道图像。dst输出图像,与输入图像具有相同的尺寸和深度。ksize模糊核的大小。它是一个2D的Size结构,指定了水平和垂直方向上的核大小。它的宽度和高度必须是正奇数,例如(3,3),(5,5)等。anchor模糊核的锚点位置,默认为(-1,-1),表示核的中心点。borderType界模式,默认为BorderType.Default,表示使用默认边界模式borderValue边界值,当边界模式为BorderType.Constant时使用,默认为Scalar(0)。

 new OpenCvSharp.Size(3, 3)效果

四、边缘检测cv2.Canny()

Canny边缘检测算法的原理是:首先对图像进行高斯滤波,然后通过Sobel算子计算图像的梯度,再通过非极大值抑制来提取局部最大值作为边缘点,最后通过双阈值检测来连接边缘点。

 cv2.Canny(image,edges,threshold1,threshold2,apertureSize,L2gradient)

参数解释image输入图像,可以是单通道灰度图像或者是3通道彩色图像。edges输出的边缘图像,是一个单通道二值图像。threshold1第一个阈值,用于边缘强度的低阈值过滤。threshold2第二个阈值,用于边缘强度的高阈值过滤。apertureSizeSobel算子的孔径大小,默认为3。L2gradient一个布尔值,指定计算梯度幅值时是否使用L2范数,默认为false。

 Cv2.Blur(src_gray, src_gray, new OpenCvSharp.Size(3, 3)) 效果

五、查找轮廓 Cv2.FindContours() 

用于检测图像中的轮廓,即找到图像中所有的连续的点的集合。该函数需要输入二值化图像,并且图像中的背景色为黑色,前景色为白色。函数会返回一个包含所有轮廓的列表,每个轮廓都是一个由点组成的数组。

Cv2.FindContours(image, mode, method[, contours[, hierarchy[, offset]]])

 FindContours(InputArray image, out Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes mode, ContourApproximationModes method, Point? offset = null) 

注意事项:

输入图像必须是二值图像,即只包含黑白两种像素值。轮廓检测只能应用于二值图像,因此在应用函数之前,通常需要先进行图像阈值化或其他图像处理操作。 六、绘制轮廓Cv2.DrawContours()

在图像上绘制检测到的轮廓,通过指定的颜色和线宽度来显示图像中的边界。

  public static void DrawContours(InputOutputArray image, IEnumerable contours, int contourIdx, Scalar color, int thickness = 1, LineTypes lineType = LineTypes.Link8, IEnumerable? hierarchy = null, int maxLevel = int.MaxValue, Point? offset = null)

  c# OpenCV相关文章目录

 c# OpenCvSharp安装(一)c# OpenCvSharp读取、显示和写入图像(二)c# OpenCvSharp图像裁剪、调整大小、旋转、透视(三)c# OpenCvSharp基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)c# OpenCvSharp 检测(斑点检测、边缘检测、轮廓检测)(五)c# OpenCvSharp 轮廓绘制六步骤你学会了吗(六)c# OpenCvSharp 目标检测五个步骤(又学会了)(七)c# OpenCvSharp透视矫正六步实现透视矫正(八)c# OpenCvSharp Cv2.Threshold()和Cv2.AdaptiveThreshold参数说明c# OpenCvSharp透视矫正参数调整器



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭