博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将截取出的图片依次存入指定文件夹的方法
阅读量:4107 次
发布时间:2019-05-25

本文共 1083 字,大约阅读时间需要 3 分钟。

在对图像进行处理的过程中,经常会遇到需要将分割好或者截取出的图片按顺序存入文件夹的操作,现在发现一种利用二重循环和sprintf_s语句实现的方法,实例如下:

待处理的图片:

实现代码:

#include 
#include
using namespace std;using namespace cv;int main(){ char ad[128] = { 0 }; int filename = 0, filenum = 0; Mat img = imread("digits.png");//使用相对路径,图片要和dataprepare.cpp放到同一个文件夹下 Mat gray; cvtColor(img, gray, CV_BGR2GRAY); int b = 20; int m = gray.rows / b; //原图为1000*2000 int n = gray.cols / b; //裁剪为5000个20*20的小图块 for (int i = 0; i < m; i++) { int offsetRow = i*b; //行上的偏移量 if (i % 5 == 0 && i != 0)//0-4行为数字0,5-9行为数字1 { filename++; filenum = 0; } for (int j = 0; j < n; j++) { int offsetCol = j*b; //列上的偏移量 //找到每张数字图片的存放路径,存到ad数组中 sprintf_s(ad, "D:\\Projects\\visual studio 2013\\SVMTest1\\data\\%d\\%d.jpg", filename, filenum++); //截取20*20的小块 Mat tmp; //截取出原图像中的指定区域复制到tmp中 gray(Range(offsetRow, offsetRow + b), Range(offsetCol, offsetCol + b)).copyTo(tmp); imwrite(ad, tmp); } } return 0;}

我图片存放的路径是D:\\Projects\\visual studio 2013\\SVMTest1\\data,在编译之前,需要在data文件夹下提前建好存放每个数字的文件夹,如下图

至于保存图片时的图片名称,保存的时候会自动生成。

运行结果如下:

你可能感兴趣的文章
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>