opencv将一张图片裁剪为很多张图片

来源:互联网 发布:怪物猎人脸型数据 编辑:程序博客网 时间:2024/04/29 03:52

最近正在做关于一个视觉相关的毕设,需要用到裁剪图像,用来进行训练,在网上找了一些博客,发现都没有现成的,所以就自己动手写了一个。具体的如下:



#include<iostream>

#include<opencv2\opencv.hpp>
#include<string.h>
#include <sstream> 


using namespace std;
using namespace cv;


string int2str(int n)//int到str的转换函数,这个是参考的http://blog.csdn.net/chavo0/article/details/51038397
{
ostringstream stream;
stream << n;  //n为int类型
return stream.str();
}


int main(int argc, char*argv[])
{
IplImage*src = cvLoadImage("D:\\图像处理代码\\毕设\\测试\\测试\\t1.jpg",0);
int i ,j;
int t = 0;
for (i=0; (i+1) * 100< src->width; i++)
{
for (j = 0; (j +1)* 100 < src->height; j++)//判断是否超出边界
{

cvSetImageROI(src, cvRect(i*100, j*100, 100, 100));//这个地方需要注意一下,每次更新原点坐标
IplImage*dst = cvCreateImage(cvSize(100, 100), 8, 1);
cvCopy(src, dst,0);
cvResetImageROI(src);

string ImageAddres = int2str(t)+".jpg";
cvSaveImage(ImageAddres.data(), dst);
cvReleaseImage(&dst);

t++;
}
}


cvReleaseImage(&src);
return 0;
}
0 0