实现以横向步长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; }