Mat image;
image = imread("D:\\neg31.tif",CV_LOAD_IMAGE_COLOR);//改成自己的图片路径
int minSize=30, maxSize=100; //切图的大小范围是30*30-100*100
int number=400; //切400 个图
for( int i = 0; i < number; i++ )
{
int x=rand()%(image.cols-maxSize*2)+maxSize,y=rand()%(image.rows-maxSize*2)+maxSize,r=rand()%(maxSize-2*minSize)+minSize;
Mat sub_src;
Rect rect(x, y , r, r);
image(rect).copyTo(sub_src);
string tempDir="D:\\RADI\\neg\\"; //切好后的图的储存路径
stringstream ss;
ss << i;
string str = ss.str();// 给图像命名为 1.jpg 2.jpg ……
tempDir+=str;
tempDir+=".jpg";
imwrite( tempDir, sub_src );
}
该代码需要在opencv环境下运行, 可自动将一整张图片切割成指定大小和数量的子图像。
用机器学习做目标识别的时候,需要大量的负样本图片,通过该程序可以快速获得这些样本。
输入图像:
输出图像:
自动切割图像——负样本自动生成代码 C++
最新推荐文章于 2022-07-21 10:08:34 发布