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

OpenCV Discussion :

Reconnaître une image dans une image


Sujet :

OpenCV

  1. #1
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 51
    Par défaut Reconnaître une image dans une image
    Bonjour,

    Je reviens vers vous avec mon application. Donc je dois faire une application sur iPhone qui sachant lire un numéro de chèque avec la police en mode code barre.

    J'ai trouvé un petit algo qui permet de reconnaître une image dans une plus grande image, dont voici l'algo (pas trop long) :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #include "opencv2/highgui/highgui.hpp"
    #include "opencv2/imgproc/imgproc.hpp"
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    using namespace cv;
     
    /// Global Variables
    Mat img; Mat templ; Mat result;
    char* image_window = "Source Image";
    char* result_window = "Result window";
    int match_method;
    int max_Trackbar = 5;
     
    /// Function Headers
    void MatchingMethod( int, void*);
    /**@function main*/
    int main( int argc, char** argv )
    {
    /// Load image and template
    img = imread( argv[1], 1 );
    templ = imread( argv[2], 1 );
     
    /// Create windows
    namedWindow( image_window, CV_WINDOW_AUTOSIZE );
    namedWindow( result_window, CV_WINDOW_AUTOSIZE );
    /// Create Trackbar
    char* trackbar_label = "Method: \n 0: SQDIFF \n 1: SQDIFF NORMED \n 2: TM CCORR \n 3: TM CCORR NORMED \n 4: TM COEFF....";
    createTrackbar( trackbar_label, image_window, &match_method, max_Trackbar, MatchingMethod );
    MatchingMethod( 0, 0 );
    waitKey(0);
    return 0;
    }
    /**
    *@function MatchingMethod
    *@brief Trackbar callback
    */
    void MatchingMethod( int, void*)
    {
    /// Source image to display
    Mat img_display;
    img.copyTo( img_display );
    /// Create the result matrix
    int result_cols = img.cols - templ.cols + 1;
    int result_rows = img.rows - templ.rows + 1;
    result.create( result_cols, result_rows, CV_32FC1 );
    /// Do the Matching and Normalize
    matchTemplate( img, templ, result, match_method );
    normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
    /// Localizing the best match with minMaxLoc
    double minVal; double maxVal; Point minLoc; Point maxLoc;
    Point matchLoc;
    minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );
    /// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
    if( match_method == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED )
    { matchLoc = minLoc; }
    else
    { matchLoc = maxLoc; }
    /// Show me what you got
    rectangle( img_display, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, rectangle( result, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
    imshow( image_window, img_display );
    imshow( result_window, result );
    return;
    }
    Est-il possible d'utiliser ce genre d'algo pour repérer un caractère (comme le "1") dans mes chèques, sachant que ma photo du "1" et ma photo de chèque peuvent avoir des différences de couleur, de contraste, de rotation, de forme, de taille, tout ça relativement faiblement (enfin ça dépend du photographe) ?

    Je veux dire que les photos à macher se seront pas identiques à 100% mais on ne pourra pas confondre un "1" avec un "8" normalement.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 72
    Par défaut
    Bonjour,
    Si le but est de détecter et lire des codes barres, ça sera plus facile d'utiliser directement une librairie de lecture de code a barre (style zxing par exemple),

  3. #3
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 51
    Par défaut
    Citation Envoyé par ehkhalid Voir le message
    Bonjour,
    Si le but est de détecter et lire des codes barres, ça sera plus facile d'utiliser directement une librairie de lecture de code a barre (style zxing par exemple),
    Oui sans doute, sauf que la police CMC7 est particulière. C'est une police code barre, donc les barres verticales sont coupés, toutes de tailles différentes.
    De plus, je cite depuis http://code.google.com/p/zxing/ :
    "iphone: iPhone client + port to Objective C / C++ (QR code only) ".

    Donc une librairie qui ne peut apparemment qu'être utiliser pour les QRCode sur iPhone, alors que dans mon cas, je voudrais avoir un code barre personnalisé, vu que je n'ai vu aucun OCR qui peut lire les codes barres de la police CMC7.

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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