【问题标题】:Connect to IP Camera Using Emgu CV's Capture = New Capture()使用 Emgu CV Capture = New Capture() 连接到 IP 摄像机
【发布时间】:2013-04-10 19:42:12
【问题描述】:

使用 Visual Basic 2008 和 Emgu CV,我可以在我的 PC 上捕获网络摄像头的流。 我想要做的是连接到 IP 摄像机,知道它的 URL,使用 Capture = New Capture()。

这是我的代码:

Imports Emgu.CV
Imports Emgu.CV.Util
Imports Emgu.CV.Structure

Public Class Form1

Dim capturez As Capture = New Capture("rtsp://[IP Address]/mpeg4/media.amp")

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    Dim imagez As Image(Of Bgr, Byte) = capturez.QueryFrame()
    PictureBox1.Image = imagez.ToBitmap()

End Sub

End Class

我收到以下错误:无法从 rtsp://[IP 地址]/mpeg4/media.amp 创建捕获

是否可以使用 Capture = New Capture 来做到这一点?如果没有,他们还有其他方法吗?

谢谢。

【问题讨论】:

  • 嗯,那些网络摄像机,不就是一个网站,你必须点击某些部分才能获得图片吗?所以 mpeg4/media.amp 给你一个流?也许您可以从提供静态图片的地址开始,然后越来越频繁地拉新图片,作为第一个肮脏的解决方法

标签: vb.net ip-address emgucv


【解决方案1】:

这是我最后使用的解决方案。它仅适用于 JPEG 网络摄像头(不是 MJPEG),不需要 EmguCV

'Connect To Webcam ----------------------------------------------------------------------
    Dim NumberFrames As Integer = 1
    Dim imgNum = Convert.ToString(FrameNumber)
    Dim sourceURL As String = ("http://91.142.238.200/record/current.jpg?rand=" + imgNum)
    'create HTTP request
    Dim req As HttpWebRequest = HttpWebRequest.Create(sourceURL)
    'get response
    Dim res As HttpWebResponse = req.GetResponse
    'get response stream
    Dim reader As New StreamReader(res.GetResponseStream())
    'read data from stream
    Dim img As Image = Image.FromStream(res.GetResponseStream())
    'get bitmap
    PictureBox1.Image = img
    'Increment frame
    FrameNumber = FrameNumber + 1
    '-----------------------------------------------------------------------------------------

【讨论】:

    【解决方案2】:

    这台相机有ip用户名和密码吗?如果你尝试这样的事情:

    Imports Emgu.CV
    Imports Emgu.CV.Util
    Imports Emgu.CV.Structure
    
    Public Class Form1
    
    Dim capturez As Capture = New Capture("rtsp://username:password@[IP Address]/mpeg4/media.amp")
    
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
    Dim imagez As Image(Of Bgr, Byte) = capturez.QueryFrame()
    PictureBox1.Image = imagez.ToBitmap()
    
    End Sub
    
    
    End Class
    

    【讨论】:

    • 你的问题到底是什么?
    • 是的,可以使用 Capture = New Capture();
    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多