在 OpenCv 3.0.0 中使用百分比随机读取一些图像
read some images randomly using a percentage in OpenCv 3.0.0
我想开发一个 SVM 分类器,因为我有图像,我会使用 OpenCv 3.0.0 和 C++ 读取 80% 的数据用于训练,20% 的数据用于随机测试。
你能帮我吗。
我的图片在同一个文件夹中。
您可以:
用OpenCV glob函数读取指定文件夹下的所有文件。您会将所有文件名保存到 std::vector<std::string>
、
std::random_shuffle
文件名向量
只保留打乱后向量的前 XX% 个名称
用你的图片做点什么
代码:
#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;
}
我想开发一个 SVM 分类器,因为我有图像,我会使用 OpenCv 3.0.0 和 C++ 读取 80% 的数据用于训练,20% 的数据用于随机测试。 你能帮我吗。 我的图片在同一个文件夹中。
您可以:
用OpenCV glob函数读取指定文件夹下的所有文件。您会将所有文件名保存到
std::vector<std::string>
、std::random_shuffle
文件名向量只保留打乱后向量的前 XX% 个名称
用你的图片做点什么
代码:
#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;
}