vb如何识别摄像头拍下的图片上圆的中心点位置

PS:图片大小固定,但是圆环大小,位置不固定,现在就是想怎么把拍下的图片分析,找到每张图片圆环的中心点位置?一次分析一张。。

这个一下子搞不出来的,就算搞出来了也不会轻易给你的!

给你丢些板砖吧:

Private Sub Command1_Click()

  Dim i As Long, j As Long, k As Long

  Dim Col As Long, HB As Long

  Dim JS() As Long '3阶色

  Dim Sel(255) As Byte

  Dim JST3() As Long '3阶色图层

  Dim DD() As Long '圆环

  Dim ExitWhl As Boolean

  Dim X As Long, Y As Long '圆心坐标

  Pic.AutoRedraw = True

  Pic.AutoSize = True

  Pic.ScaleMode = 3

  Pic.Picture = LoadPicture("E:\1.bmp")

  Pic.Refresh

  j = 0

  ReDim JS(0)

  For i = 0 To 254 '生成3阶色

    If i Mod 85 = 0 Then

      j = i + 1

      JS(UBound(JS)) = j

      ReDim Preserve JS(UBound(JS) + 1)

    End If

    Sel(i) = j

  Next

  Sel(255) = j

  ReDim JST3(Pic.ScaleWidth, Pic.ScaleHeight, 2)

  For i = 0 To Pic.ScaleWidth

  For j = 0 To Pic.ScaleHeight

    Col = Pic.Point(i, j)

    Col = (Col And &HFF0000) / 256 / 256 '转为黑白

    HB = Sel(Col) '转为3阶色

    For k = 0 To UBound(JS) - 1

      If JS(k) = HB Then JST3(i, j, k) = HB: Exit For

    Next

    Col = RGB(HB, HB, HB) '显示3阶色图像

    Pic.PSet (i, j), Col

  Next

  Next

  For i = 0 To UBound(JS) - 1

    ReDim DD(1, 3)

    ExitWhl = False

    For j = 0 To Pic.ScaleWidth '左面

      For k = 0 To Pic.ScaleHeight

        If JST3(j, k, i) > 0 Then

          DD(0, 0) = j

          DD(1, 0) = k

          ExitWhl = True

          Exit For

        End If

      Next

      If ExitWhl Then Exit For

    Next

    ExitWhl = False

    For j = 0 To Pic.ScaleHeight '顶面

      For k = 0 To Pic.ScaleWidth

        If JST3(k, j, i) > 0 Then

          DD(0, 1) = k

          DD(1, 1) = j

          ExitWhl = True

          Exit For

        End If

      Next

      If ExitWhl Then Exit For

    Next

    ExitWhl = False

    For j = Pic.ScaleWidth To 0 Step -1  '右面

      For k = 0 To Pic.ScaleHeight

        If JST3(j, k, i) > 0 Then

          DD(0, 2) = j

          DD(1, 2) = k

          ExitWhl = True

          Exit For

        End If

      Next

      If ExitWhl Then Exit For

    Next

    ExitWhl = False

    For j = Pic.ScaleHeight To 0 Step -1  '底面

      For k = 0 To Pic.ScaleWidth

        If JST3(k, j, i) > 0 Then

          DD(0, 3) = k

          DD(1, 3) = j

          ExitWhl = True

          Exit For

        End If

      Next

      If ExitWhl Then Exit For

    Next

    If Abs(DD(1, 0) - DD(1, 2)) < 20 _

    And Abs(DD(0, 1) - DD(0, 3)) < 20 Then '判断圆环

      X = (DD(0, 2) - DD(0, 0)) / 2 + DD(0, 0)

      Y = (DD(1, 3) - DD(1, 1)) / 2 + DD(1, 1)

      Exit For

    End If

  Next

  Pic.PSet (X, Y), vbRed

  MsgBox "圆心是:" & X & "," & Y

  Pic.Refresh

  '重校验部分的代码就不给你了,秘密!嘘!

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-31
图像识别偶不清楚(搜索了一下应该会用到霍夫变换算法检测),这是网上找来的
在分析了啤酒瓶瓶口检测特点的基础上,讨论了基于重心法的瓶口定位方法,其中包括采用灰度和边缘分割瓶口像素点的两种方法,实验证明这两种方法还不能满足实际检测的要求。在此基础上,详细介绍了探测圆逐步逼近法和一种瓶口定位的综合方法。前者使用一个不断移动扩大的圆形模板搜索定位瓶口中心,后者基于霍夫变换原理并吸取了多种算法的优点。这两种方法都达到了很高的定位精度和速度,完全可以满足实际需要;本回答被提问者和网友采纳
第2个回答  2011-10-06
给你个思路吧,根据圆环颜色代码分析追问

如果只是黑白的,那其他的地方也有黑色要怎么区分?最重要的是分析出是圆并且找到圆心位置了

相似回答