实现以横向步长step_row、纵向步长step_col,在一幅大图上剪裁宽度为width、高度为height的小图像,图像命名形式为“数字(递增)_大图名”格式,将小图保存在argv[6]的文件夹中。
#include <opencv2/opencv.hpp> #include <string> #include <iostream> using namespace std; using namespace cv; int main (int argc, char *argv[]){ Mat img = imread(argv[1], 0); int width = atoi(argv[2]); int height = atoi(argv[3]); int step_col = atoi(argv[4]); int step_row = atoi(argv[5]); int index=0; stringstream name; for (int j = 0; j < img.cols; j = j + step_col){ if (j + width > img.cols) break; for (int i = 0; i < img.rows; i = i + step_row){ cout << j << endl; cout << i << endl; if (i + height > img.rows) break; char str[256]; snprintf(str, sizeof(str), "%d", index); string ss = str; name << argv[6] + ss + "_" + argv[1]; imwrite(name.str(), img(Rect(j, i, width, height))); name.clear(); name.str(std::string()); index++; } } return 0; }