2015-12-07 4 views
0

Je suis confronté à un problème d'accès au cadre de la caméra IP. J'utilise la caméra Axis M1013 et je souhaite effectuer diverses opérations telles que la détection des couleurs et la détection d'objets. Je suis capable d'appeler l'appareil photo, mais je ne sais pas comment obtenir l'image actuelle pour pouvoir effectuer d'autres opérations.Comment accéder ou obtenir l'image actuelle dans BMP à partir de la caméra réseau Axis?

Voici mon code:

private void Play_btn_Click(object sender, EventArgs e) 
{ 
    //viewIPCamera(); 
    AMC1.MediaURL = "169.254.103.123//axis-cgi/mjpg/video.cgi";; 
    AMC1.MediaUsername = "root"; 
    AMC1.MediaPassword = "password"; 
    AMC1.MediaType = "mjpeg"; 
    AMC1.Play(); 

Alors, comment puis-je obtenir l'image actuelle d'une caméra réseau?

Répondre

0

Les caméras Axis utilisent la norme ONVIF, essayez peut-être quelque chose comme ça.

using Ozeki.Media.IPCamera; 
using Ozeki.Media.MediaHandlers.Video; 
using Ozeki.Media.Video.Controls; 
using Ozeki.Media.MediaHandlers; 


public partial class Snapshot { 

    private SnapshotHandler _snapshotHandler; 

    private void CreateSnapShot(string path) { 
       var date = DateTime.Now.Year + "y-" + DateTime.Now.Month + "m-" + DateTime.Now.Day + "d-" + 
          DateTime.Now.Hour + "h-" + DateTime.Now.Minute + "m-" + DateTime.Now.Second + "s"; 
       string currentpath; 
       if (String.IsNullOrEmpty(path)) 
        currentpath = date + ".jpg"; 
       else 
        currentpath = path + "\\" + date + ".jpg"; 

       var snapShotImage = _snapshotHandler.TakeSnapshot().ToImage(); 
       snapShotImage.Save(currentpath, System.Drawing.Imaging.ImageFormat.Jpeg); 
    } 

}

Ce lien peut vous aider à démarrer:

How to create ONVIF Ip camera snapshot

+0

merci beaucoup pour votre commentaire. Je vais essayer de vous le faire savoir. – max0118

+0

@ max0118 Vérifiez mon poste, j'ai inclus un exemple de code pour un appareil photo Ozeki, peut-être que cela peut vous aider. – SCGB

0

Si vous avez vraiment besoin d'utiliser le SDK Axis cela peut aider.

object myBuffer; 
int myBufferSize; 
AMC1.GetCurrentImage(0, out myBuffer, out myBufferSize) ; 
byte[] returningBytes = new byte[myBufferSize]; 
//Add JPEG header to new byte array 
returningBytes[0] = Convert.ToByte(255); 
returningBytes[1] = Convert.ToByte(216); 
returningBytes[2] = Convert.ToByte(255); 
returningBytes[3] = Convert.ToByte(224); 
returningBytes[4] = Convert.ToByte(0); 
returningBytes[5] = Convert.ToByte(16); 
returningBytes[6] = Convert.ToByte(74); 
returningBytes[7] = Convert.ToByte(70); 
returningBytes[8] = Convert.ToByte(73); 
returningBytes[9] = Convert.ToByte(70); 
//Copy actual image into new byte array 
Buffer.BlockCopy(myBuffer as Array, 10, returningBytes, 10, myBufferSize - 10); 

returningBytes est maintenant un bon bytearray et peuvent être enregistrés dans une base de données ou converties en un MemoryStream pour remplir un picturebox. Prenez note que j'ai utilisé un jpeg et non bmp comme l'OP demandé cependant.