山东高级网站建设,瀑布流的网站,四川网站建设找珊瑚云,宁波网站搜索排名版权声明#xff1a;本文为博主原创文章#xff0c;转载请在显著位置标明本文出处以及作者网名#xff0c;未经作者允许不得用于商业目的。
即将推出EmguCV的教程#xff0c;请大家还稍作等待。
之前网友咨询如何获得图像中圆形的半径#xff0c;其中有两个十字作为标定…版权声明本文为博主原创文章转载请在显著位置标明本文出处以及作者网名未经作者允许不得用于商业目的。
即将推出EmguCV的教程请大家还稍作等待。
之前网友咨询如何获得图像中圆形的半径其中有两个十字作为标定十字之间距离为100mm。如下图 说实在的单靠VB.net很难获得相关圆形信息为了弥补这部分知识下定决心学习了EmguCV。以下是具体代码https://blog.csdn.net/UruseiBest Dim msrc As New Mat(C:\learnEmgucv\celiang.jpg, ImreadModes.Color)Dim mgray As New Mat()CvInvoke.CvtColor(msrc, mgray, ColorConversion.Bgr2Gray)Dim kernel As New Matkernel CvInvoke.GetStructuringElement(ElementShape.Cross, New Drawing.Size(3, 3), New Point(-1, -1))Dim merode As New Mat 这里使用了2次迭代CvInvoke.Dilate(mgray, merode, kernel, New Point(-1, -1), 1, BorderType.Constant, Nothing)CvInvoke.Threshold(merode, merode, 200, 255, ThresholdType.BinaryInv)获得所有轮廓 https://blog.csdn.net/UruseiBestDim contours As New VectorOfVectorOfPointDim hierarchy As New VectorOfRectCvInvoke.FindContours(merode, contours, hierarchy, RetrType.List, ChainApproxMethod.ChainApproxSimple)Dim m2 As New Mat(merode.Size, DepthType.Cv8U, 1)m2.SetTo(New MCvScalar(0))圆轮廓Dim contourCircle As VectorOfPoint圆轮廓的周长Dim perimeter As Double绘制轮廓 https://blog.csdn.net/UruseiBestFor i As Integer 0 To contours.Size - 1Dim carea As VectorOfPoint contours(i)获得轮廓面积Dim area As Double CvInvoke.ContourArea(carea, False)符合条件时绘制轮廓排除圆形只保留十字线 本图中圆形面积为2449直线面积为8需要根据实际情况调整If area 200 ThenCvInvoke.DrawContours(m2, contours, i, New MCvScalar(255), 0.4)Else得到圆形图像中只有三个轮廓2个交叉十字线段、1个圆形这里简化操作否则在多个轮廓情况下应获取最大面积的轮廓判断为圆形contourCircle contours(i)获取轮廓周长perimeter CvInvoke.ArcLength(contourCircle, True)End IfNextImageBox1.Image m2 使用HoughLinesP方法检测图像中的直线并将其绘制到图像因为本图中十字线上的线段较短所以这里阈值设置很小Dim lines As LineSegment2D() CvInvoke.HoughLinesP(m2, 1, Math.PI / 180, 5, 5, 80)Dim m3 As New Mat(merode.Size, DepthType.Cv8U, 3)m3.SetTo(New MCvScalar(0, 0, 0))For Each line As LineSegment2D In linesCvInvoke.Line(m3, line.P1, line.P2, New MCvScalar(0, 255, 0), 2)NextImageBox2.Image m3 对直线进行分类将其分为垂直和水平两类Dim verticalLines As New List(Of LineSegment2D)Dim horizontalLines As New List(Of LineSegment2D)计算每条直线的倾斜角度来进行分类将倾斜角度在60 - 120度之间的直线划分为垂直类将倾斜角度在30 - 150度之间的直线划分为水平类。For Each line As LineSegment2D In linesDim angle As Double Math.Atan2(line.P2.Y - line.P1.Y, line.P2.X - line.P1.X) * 180 / Math.PIIf angle 0 Then angle 180If angle 60 AndAlso angle 120 ThenverticalLines.Add(line)ElseIf angle 150 OrElse angle 30 ThenhorizontalLines.Add(line)End IfNext对垂直和水平直线进行匹配并计算十字中心点的位置Dim intersections As New List(Of PointF)得到两个相交点 https://blog.csdn.net/UruseiBestFor Each verticalLine As LineSegment2D In verticalLinesFor Each horizontalLine As LineSegment2D In horizontalLines基于图像中两条直线真实相交如果垂直线的中点X坐标在水平线两端点X坐标之间那么这条垂直线段和这条水平线段相交Dim centerX As Single (verticalLine.P1.X verticalLine.P2.X) / 2If horizontalLine.P1.X horizontalLine.P2.X ThenIf centerX horizontalLine.P1.X And centerX horizontalLine.P2.X ThenDim intersectionPoint As New PointF((horizontalLine.P1.X horizontalLine.P2.X verticalLine.P1.X verticalLine.P2.X) / 4,(horizontalLine.P1.Y horizontalLine.P2.Y verticalLine.P1.Y verticalLine.P2.Y) / 4)intersections.Add(intersectionPoint)End IfElseIf centerX horizontalLine.P2.X And centerX horizontalLine.P1.X ThenDim intersectionPoint As New PointF((horizontalLine.P1.X horizontalLine.P2.X verticalLine.P1.X verticalLine.P2.X) / 4,(horizontalLine.P1.Y horizontalLine.P2.Y verticalLine.P1.Y verticalLine.P2.Y) / 4)intersections.Add(intersectionPoint)End IfEnd IfNextNextIf intersections.Count 2 ThenMessageBox.Show(未能获得两个十字线的交叉点)Exit SubEnd IfCvInvoke.Line(msrc, PointFToPoint(intersections(0)), PointFToPoint(intersections(1)), New MCvScalar(0, 255, 0), 2)CvInvoke.Imshow(m3, msrc) 计算两个交点的距离Dim distance As Double Math.Sqrt((intersections(0).X - intersections(1).X) ^ 2 (intersections(0).Y - intersections(1).Y) ^ 2)实际中两交点距离为100毫米计算相应比例Dim proportion As Double 100 / distance以下是基于最小外接圆来计算实际圆半径Dim cf As CircleFcf CvInvoke.MinEnclosingCircle(contourCircle)获得外接圆形 https://blog.csdn.net/UruseiBestCvInvoke.Circle(msrc, New Point(CInt(cf.Center.X), CInt(cf.Center.Y)), cf.Radius, New MCvScalar(0, 0, 255), 2)CvInvoke.Imshow(m4, msrc) 实际圆半径Dim realradius1 As Doublerealradius1 proportion * cf.Radius以下是基于轮廓周长来计算实际圆半径实际圆周长Dim realperimeter As Double perimeter * proportion图像中的圆半径 https://blog.csdn.net/UruseiBestDim radius As Doubleradius (perimeter / Math.PI) / 2实际圆半径Dim realradius2 As Doublerealradius2 proportion * radiusMessageBox.Show(最小外接圆来计算实际圆半径 realradius1 ControlChars.CrLf 基于轮廓周长来计算实际圆半径 realradius2) 这个网友当时提出来问题的时候我还没有办法解决不过经过不断学习目前已经学习了不少相关知识至少可以获得圆半径了还是略微感到欣慰。
关于EmguCV的知识下一步整理出来。 由于.net平台下C#和vb.NET很相似本文也可以为C#爱好者提供参考。
学习更多vb.net知识请参看vb.net 教程 目录 文章转载自: http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn http://www.morning.bhznl.cn.gov.cn.bhznl.cn http://www.morning.sqyjh.cn.gov.cn.sqyjh.cn http://www.morning.cbczs.cn.gov.cn.cbczs.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.jgykx.cn.gov.cn.jgykx.cn http://www.morning.sglcg.cn.gov.cn.sglcg.cn http://www.morning.mqpdl.cn.gov.cn.mqpdl.cn http://www.morning.bdgb.cn.gov.cn.bdgb.cn http://www.morning.wrbx.cn.gov.cn.wrbx.cn http://www.morning.rbcw.cn.gov.cn.rbcw.cn http://www.morning.rdxp.cn.gov.cn.rdxp.cn http://www.morning.c7629.cn.gov.cn.c7629.cn http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn http://www.morning.rqpgk.cn.gov.cn.rqpgk.cn http://www.morning.qinhuangdjy.cn.gov.cn.qinhuangdjy.cn http://www.morning.gswfs.cn.gov.cn.gswfs.cn http://www.morning.fllfc.cn.gov.cn.fllfc.cn http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.rjmg.cn.gov.cn.rjmg.cn http://www.morning.wrtxk.cn.gov.cn.wrtxk.cn http://www.morning.simpliq.cn.gov.cn.simpliq.cn http://www.morning.bgygx.cn.gov.cn.bgygx.cn http://www.morning.zqxhn.cn.gov.cn.zqxhn.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.qmbpy.cn.gov.cn.qmbpy.cn http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn http://www.morning.wbns.cn.gov.cn.wbns.cn http://www.morning.rltsx.cn.gov.cn.rltsx.cn http://www.morning.cszbj.cn.gov.cn.cszbj.cn http://www.morning.mlnbd.cn.gov.cn.mlnbd.cn http://www.morning.dwztj.cn.gov.cn.dwztj.cn http://www.morning.kkwbw.cn.gov.cn.kkwbw.cn http://www.morning.smwlr.cn.gov.cn.smwlr.cn http://www.morning.rfrxt.cn.gov.cn.rfrxt.cn http://www.morning.lbrrn.cn.gov.cn.lbrrn.cn http://www.morning.mpmtz.cn.gov.cn.mpmtz.cn http://www.morning.tphjl.cn.gov.cn.tphjl.cn http://www.morning.ftznb.cn.gov.cn.ftznb.cn http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn http://www.morning.kkjlz.cn.gov.cn.kkjlz.cn http://www.morning.ldspj.cn.gov.cn.ldspj.cn http://www.morning.fnczn.cn.gov.cn.fnczn.cn http://www.morning.xbptx.cn.gov.cn.xbptx.cn http://www.morning.rydhq.cn.gov.cn.rydhq.cn http://www.morning.pxlpt.cn.gov.cn.pxlpt.cn http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.cprbp.cn.gov.cn.cprbp.cn http://www.morning.bwjgb.cn.gov.cn.bwjgb.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn http://www.morning.cbpkr.cn.gov.cn.cbpkr.cn http://www.morning.dyxlj.cn.gov.cn.dyxlj.cn http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn http://www.morning.qrsm.cn.gov.cn.qrsm.cn http://www.morning.ychoise.com.gov.cn.ychoise.com http://www.morning.kntsd.cn.gov.cn.kntsd.cn http://www.morning.ywqsk.cn.gov.cn.ywqsk.cn http://www.morning.hmmnb.cn.gov.cn.hmmnb.cn http://www.morning.pjtw.cn.gov.cn.pjtw.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.gnyhc.cn.gov.cn.gnyhc.cn http://www.morning.rcbdn.cn.gov.cn.rcbdn.cn http://www.morning.khlxd.cn.gov.cn.khlxd.cn http://www.morning.rhkmn.cn.gov.cn.rhkmn.cn http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn http://www.morning.kzslk.cn.gov.cn.kzslk.cn http://www.morning.cbqqz.cn.gov.cn.cbqqz.cn http://www.morning.rxfbf.cn.gov.cn.rxfbf.cn http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn http://www.morning.pndw.cn.gov.cn.pndw.cn http://www.morning.tsyny.cn.gov.cn.tsyny.cn http://www.morning.rgdcf.cn.gov.cn.rgdcf.cn http://www.morning.rgzc.cn.gov.cn.rgzc.cn http://www.morning.ttdxn.cn.gov.cn.ttdxn.cn http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn http://www.morning.qcwck.cn.gov.cn.qcwck.cn http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn http://www.morning.hrzymy.com.gov.cn.hrzymy.com