IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Adapter le jpg de sortie en éliminant les bords de 20mm !


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut Adapter le jpg de sortie en éliminant les bords de 20mm !
    Bonjour à toutes et à tous,

    A partir de cette procédure, j'obtiens bien un printscreen de mon application avec une autre photo à l'intérieur qui est la vue par ma caméra.

    Comme je n'ai pas trouvé de solution pour un réel screenshot uniquement de l'image.

    J'aurai aimé faire un traitement afin d'obtenir que la photo intérieure soit en éliminant les bords de mon application.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    procedure TFViewerH264.BphotoClick(Sender: TObject);
    var
    Img:TPicture;
    MemStream:TMemoryStream;
    JPG:TJPEGImage;
    Filename : string;
    begin
    //try
    Img:=TPicture.Create;
    MemStream:=TMemoryStream.Create;
    Img.Bitmap.Width:=Screen.Width;
    Img.Bitmap.Height:=Screen.Height;
    BitBlt(Img.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
    JPG:=TJPEGImage.Create;
    w4.Play;
    try
    JPG.Assign(Img.Bitmap);
    JPG.CompressionQuality:=100;
    jpg.savetostream(Memstream);
    //image1.Picture.Assign(Img.Bitmap);
    if ComboBoxURL.Text = chappli + 'CamArriere.html' then
    JPG.SaveToFile(Format(chappli+ 'CamArriere.jpg', [FileName])) else
    JPG.SaveToFile(Format(chappli+ 'CamAvant.jpg', [FileName]));
    finally
    img.free;
    JPG.Free;
     
    end;
    end;
    Merci d'avance si il y avait une solution.

    @+,

    cincap
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    quel est le contenu de C:\Data\Delphi\Web\naviweb\CamArriere.html ?

    généralement les caméras ont un accès Web, il suffit donc de lui faire une requête HTTP pour télécharger l'image JPG de celle-ci.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Paul TOTH, bonsoir et merci de ta question.

    En effet j'ai déjà testé la requête screenshot concernant le composant Webbrowser mais l'image JPG sauvée est noire alors que la vue prise par la caméra était présente.

    Avec le fichier html, je charge le lecteur QuickTime pour afficher ma caméra Wifi 2MP h264 par son Ip interne puisque mon application ne sert qu'en interne, de l'extérieur je l'affiche sur mon IPhone avec une application dédiée qui est Xmeye.

    Voici le code html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <html> 
     
    <head> 
     
    <title>Viewer H264</title> 
     
    </head> 
     
    <body> 
     
     
     <form name = "Caméra arrière"> 
     
       <script language="JavaScript"> 
     
    //1920 x1080 ou 1535 x 740
     
    document.writeln('<OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width=' +1535+' height='+740+'   CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">'); 
     
      document.writeln('<param name="autoplay" value="true">'); 
     
    //TOFIT ou ASPECT 
     
    document.writeln('<param name="scale" value="tofit">'); 
     
    //document.writeln('<param name="bgcolor" value="purple">'); 
     
      document.writeln('<param name="controller" value="true">'); 
     
     
     
     //H.264 over RTSP over 554 port  
     
         document.writeln('<param name="qtsrc" value="' + 'rtsp://192.168.1.12:554/user=admin&password=&channel=1&stream=0.sdp?real_stream' + '">'); 
     
     
      </script>  
     
    </body>
    J'ai déjà tout testé.

    @+,

    Cincap

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    non ce que j'avais en tête c'est une URL du type

    http://192.168.1.12/axis-cgi/jpg/ima...lution=320x240

    http://192.168.1.12/cgi-bin/guest/Vi...esolution=QVGA

    qui renvoie directement une image JPEG générée par la caméra...j'utilise cela sur une caméra AXIS (premier lien) et une caméra H.264 de marque inconnue pour la seconde.

    mais je ne sais pas si ta caméra support ce mode.

    tu peux aussi tenter de lire directement le flux RTSP...j'avais fait quelques recherches sur le sujet il y a pas mal d'années avec le flux Video de la FreeBox
    http://tothpaul.free.fr/sources.php?dprtcp.tvinside
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2008
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 666
    Points : 643
    Points
    643
    Par défaut
    Bonsoir,

    Cincap, j'ai une vielle source pour rogner une image.
    Teste-la, peut-être elle t'aiderait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure CropBitmap(InBitmap : TBitmap; X, Y, W, H :Integer);
    begin
      BitBlt(InBitmap.Canvas.Handle, 0, 0, W, H, InBitmap.Canvas.Handle, X, Y, SRCCOPY);
      InBitmap.Width :=W;
      InBitmap.Height:=H;
    end;
    Utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.BitBtn2Click(Sender: TObject);
     
    Var
     Bmp : TBitmap;
    begin
        Bmp:=Image1.Picture.Bitmap;
        CropBitmap(Bmp, 20,100, 1530, 710);  // à adapter à tes besoins
        Image1.Picture.Assign(Bmp);
     
    end;
    Je l'ai testée sur ton image, le résultat est satisfaisant.

    Cincap, tu peux demander le SDK de tes ip caméras à ton fournisseurs.

    A+

    Nabil

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    @ Paul TOTH, merci de ta réponse, je testerai ton lien, je pense que h264 c'est du Mpeg4.

    Mon application fonctionne très bien en tant que viewer avec le code html, il n'y a que le screenshot qui me donne une image noire.

    Peut être en jouant sur l'accélération matérielle de Seven 64bits cela irait.

    N. B. si je charge une page You Tube avec une vidéo, j'obtiens bien un screenshot correct en jpg.

    Avec mes caméras, j'ai aussi le logiciel de chez Golbong qui fonctionne très bien :

    lien : https://www.amazon.com/clouddrive/sh...ink_copy_flash


    @ Nabil, merci aussi de ta réponse, j'ai une petite source en Net mais impossible pour moi de la traduire en Delphi 6, cette source permet de voir 4 caméras H264 suivant leur Ip.

    Je vous tiens au courant.

    @+,

    cincap

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Paul TOTH, j'ai testé ton application et le résultat la vidéo est vide, ce qui me parait normal étant donné le format H264.

    @ Nabil, j'ai aussi testé ton code et en effet cela ma parait ok sauf que l'image qui doit être traitée est en jpg, reste à l'adapter à mon code du 1er topic pour ne pas rajouter 2 Timage et un TOpenDialog.

    Je persiste.

    @+,

    Cincap

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par cincap Voir le message
    @ Paul TOTH, j'ai testé ton application et le résultat la vidéo est vide, ce qui me parait normal étant donné le format H264.
    RSTP c'est un protocole de transfert, peu importe le format, c'est comme le HTTP qui permet de lire du HTML, du JPEG, du SWF...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Paul TOTH,

    Ok bien compris, mais le fichier vidéo est bien créé mais vide.

    Si je tape dans la barre d'adresse de Google directement l'ip, la page de la caméra s'affiche et je n'ai qu'à taper l'user et le mot de passe pour avoir accès à la vue prise par la caméra.

    Je ne sais pas si cela serait utile de communiquer le code html de cette page ?

    @+,

    Cincap

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    oui ça serait utile, il doit probablement y avoir une balise <img src="..."> ou équivalent
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Paul TOTH,

    Apparemment c'est comme un logiciel avec des boutons ect...

    Je ne sais pas envoyé ce fichier car il fait 169 Kb et j'ai un message d'erreur.

    Désolé.

    @+,

    cincap

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    Bonjour à toutes et à tous,

    En utilisant la solution de NABIL74 et mon code du 1er topic, j'arrive à ce que j'aurai aimé obtenir soit la photo centrale de mon application.

    Je clôture donc ce topic.

    Merci à ceux qui ont contribué à m'aider.

    @+,

    cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 16/11/2005, 16h25
  2. [sql] [oracle] éliminer les doublons dans sum ?
    Par trungsi dans le forum Langage SQL
    Réponses: 14
    Dernier message: 04/03/2005, 12h29
  3. PB sortie standard avec les PTHREAD !!!
    Par djspit dans le forum C++
    Réponses: 15
    Dernier message: 19/11/2004, 01h17
  4. Éliminer les lignes blanches dans un tableau
    Par DenPro dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/11/2004, 01h27
  5. Fusion de lignes de tables en éliminant les redondances
    Par MinsK dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 22/04/2004, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo