2016-04-13 29 views
-4

'daki bir yüzdeyi kullanarak bazı görüntüleri rastgele okuduğum bir SVM sınıflandırıcıyı devralacağım, bunun için resimlerim vardı ve OpenCv 3.0'ı kullanarak eğitim için% 80 ve rastgele test için% 20 okuyacağım. 0 ve C++. Lütfen bana yardımcı olabilir misiniz? Resimlerim aynı klasörde. Şunları yapabilirsinizOpenCv 3.0.0

+0

Tüm görüntülerin yolu ile dizelerin bir vektörünü almak için "glob" öğesini kullanın. Rastgele vektör karıştırın ve görüntülerin tüm isimleri – Miki

+0

notları yüklediğimi not edin ve ben onu yüklediğimde bir dosyaya koydum ve şimdi sadece% 80'i eğitim için yüklerdim ama sadece yumruk olanları değil. – nadjet

+0

Ben bir soru sorunum var, listemin büyüklüğünün% 80'ini ve benim eklemem gereken herhangi bir kütüphaneyi nasıl ayırt edebilirim (rastgele karışık ve yüzde için)? – nadjet

cevap

0

:

  • OpenCV glob fonksiyonu ile belirtilen klasördeki tüm dosyaları okuyun. Sen

  • görüntüleri ile bir şeyler yapın karıştırılır vektörün sadece ilk% XX adlarını tutun dosya adlarının

  • std::random_shuffle vektör, bir std::vector<std::string> içine tüm dosya adlarını tasarruf edersiniz

Kodu:

#include <opencv2/opencv.hpp> 
#include <vector> 
#include <string> 
#include <algorithm> 

int main() 
{ 
    // Read all .png files from the specified folder 
    std::string folder = "D:/SO/img/*.png"; 
    std::vector<std::string> filenames; 
    cv::glob(folder, filenames); 

    // Random shuffle 
    std::random_shuffle(filenames.begin(), filenames.end()); 

    // Keep 80% 
    float how_many = 0.80; 
    size_t N = filenames.size() * how_many; 

    // Do something with N random images 
    for (size_t i = 0; i < N; ++i) 
    { 
     // Load and show image 
     cv::Mat3b img = cv::imread(filenames[i]); 
     cv::imshow("Img", img); 
     cv::waitKey(1); 
    } 

    return 0; 
} 
+0

çok iyi, çok teşekkürler, yardımlarınız için çok mutluyum. şimdi bana söyleyeyim, lütfen test parçası için (% 20) test bölümü için geri kalanını nasıl okuyabilirim (tren için kullanılan bir görüntü, test için kullanılmamalıdır)? lütfen – nadjet

+0

Sadece 'N'' 'filenames.size()' dizininden görüntüler kullanın. Ve C++ nasıl çalıştığını biraz çalışmaya çalışın – Miki

+0

çok teşekkür ederim, ben yaptım. – nadjet