-2

Voici mon code:Comment sauvegarder des données de sac de mots en python?

sift=cv2.xfeatures2d.SIFT_create() 
descriptors_unclustered=[] 
dictionarysize=800 
BOW=cv2.BOWKmeansTrainer(dictionarysize) 
for p in training-paths : 
    kp,dsc=sift.detectAndCompute(image,None) 
    BOW.add(dsc) 

dictionary=BOW.cluster() 
bowdiction=cv2.BOWImgDescriptorExtractor(sift, cv2.BFMatcher(cv2.NORM_L2)) 
bowdiction.setvocabulary(dictionary) 

Je veux sauver ces données bowdiction pour l'utiliser plus tard. Je ne veux pas attendre à chaque fois pour ces calculs, alors comment puis-je sauvegarder ces données?

Répondre

1

Utilisez pickle pour cette

  1. Enregistrer BOW à Pickle:

    import pickle 
    
    sift=cv2.xfeatures2d.SIFT_create() 
    descriptors_unclustered=[] 
    dictionarysize=800 
    BOW=cv2.BOWKmeansTrainer(dictionarysize) 
    for p in training-paths : 
        kp,dsc=sift.detectAndCompute(image,None) 
        BOW.add(dsc) 
    
    with open('bow_pickle.pickle', 'wb') as f: 
    pickle.dump(f) 
    
  2. Retour les données de conserves au vinaigre:

    import pickle  
    with open('bow_pickle.pickle', 'rb') as f: 
        BOW = pickle.load(f)  
    dictionary=BOW.cluster() 
    bowdiction=cv2.BOWImgDescriptorExtractor(sift,cv2.BFMatcher(cv2.NORM_L2)) 
    bowdiction.setvocabulary(dictionary) 
    
+0

Puis-je enregistrer le dictionnaire dans le même façon? Parce que surtout "dictionary = BOW.cluster()" prend tellement de temps – ali

+0

oui, vous pouvez utiliser –