'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
cevap
:
- 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, birstd::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;
}
ç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
Sadece 'N'' 'filenames.size()' dizininden görüntüler kullanın. Ve C++ nasıl çalıştığını biraz çalışmaya çalışın – Miki
çok teşekkür ederim, ben yaptım. – nadjet
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
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
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