在图像中截取小图并保存

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

 

转载于:https://www.cnblogs.com/nannan-yhx/p/10406346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值