`

随机负样本生成器

 
阅读更多
#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string.h>
#include <ctype.h>
#include<cv.h>
#include<cxcore.h>
#include<cstdlib> 
#include<ctime>
#include<malloc.h>
#include<stdlib.h>
#define N 12
using namespace std;
using namespace cv;
 
int *GetRandomArray(void)
{//产生N个100以内的随机数
	int *p = (int *)malloc(N * sizeof(int));
	memset(p, 0, sizeof(N * sizeof(int)));
	int i, j, flag, num;
	srand(time(0));
	for (i = 0; i < N; ++i)
	{
		num = rand() % 98 + 1;
		flag = 1;
		for (j = 0; j < i; ++j)
		{
			if (num == *(p + j))
			{
				flag = 0;;
				break;
			}
		}
		if (flag) *(p+i) = num;
		else --i;
	}
	return p;
}
int _tmain(void)
{//随机样本生成器,每张图片上生成6个随机的样本
	string Src_Path = "D:\\图片库\\";//图片名要先自行初始化为1.jpg,2.jpg 等
	string Sample_Path = "D:\\随机样本\\";//新生成的图片存放路径
	int Src_Num = 110;//图片库中图片个数
	char SrcImgName[256];
	char SampleImgName[256];
	int Sample_Index = 1;
	for (int Src_Index = 1; Src_Index <= Src_Num; Src_Index++)
	{
		memset(SrcImgName, '\0', 256 * sizeof(char));
		sprintf_s(SrcImgName, "%d.jpg", Src_Index);
		string Img_Path = Src_Path + SrcImgName;
		Mat Img = imread(Img_Path);
		if (Img.data == NULL)
		{
			printf("Failed to read the img %s !\n", Img_Path);
			system("pause");
			Src_Index++;
			continue;
		}
		Mat Sample;
		int *pRandom = NULL;
		pRandom = GetRandomArray();
		for (int i = 0; i < N; i = i + 2)
		{
			Sample = Img(Rect(min((int)(*(pRandom + i) * Img.cols / 100), Img.cols - 110), min((int)(*(pRandom + i + 1) * Img.rows / 100), Img.rows - 180), 110, 180));
			//此处可以修改生成负样本的大小
			memset(SampleImgName, '\0', 256 * sizeof(char));
			sprintf_s(SampleImgName, "%d.jpg", Sample_Index);
			string SampleImg_Path = Sample_Path + SampleImgName;
			char SampleImg[1024];
			strcpy_s(SampleImg, SampleImg_Path.c_str());
			IplImage qImg;
			qImg = IplImage(Sample);
			cvSaveImage(SampleImg, &qImg);
			Sample_Index++;
		}
		printf("Succeed to produce %d smaples.Total smaples:%d.\n", N/2, Sample_Index - 1);
	}
	printf("Produced %d samples.\n", Sample_Index - 1);
	return 0;
}

 

        opencv3.2+vs2017

        做图像训练经常需要正负样本,这个代码用来从图片库中随机获取负样本图片,随机生成负样本后请记得简单看一下,以免不小心裁到正样本(虽然概率很低),如果发现裁减到正样本请记得手动删除。

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    训练的负样本生成器代码

    在这个场景中,"训练的负样本生成器代码"是一个用于创建负样本的工具,特别适用于图像分类或对象检测任务。 正负样本的概念在深度学习中至关重要。例如,如果我们正在训练一个识别猫的模型,那么包含猫的图片就是正...

    随机样本:Rample样本生成器

    随机抽样随机样本生成器#Desired目标创建允许用户从提供的数据集中随机选择指定数量的样本的工具。 同样,允许您选择特定的种子或允许随机生成种子。 只需导入您的源,选择样本数量,设置种子,然后单击“制作样本”...

    AdaBoost训练样本中负样本生成

    用opencv的Adaboost训练级联分类器的时候需要产生负样本。 就这个代码可以在背景图片中随机产生N个负样本

    随机数生成器

    在假设检验中,我们可能会用随机数来生成伪随机样本,以测试一个假设是否合理。此外,随机抽样也需要随机数生成器来确保样本的代表性。 随机数生成器的工作原理通常基于数学公式或者算法,比如线性同余法、梅森旋转...

    基于深度学习领域图片识别项目的验证码样本数据生成器

    【作品名称】:基于深度学习领域图片识别项目的验证码样本数据生成器 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...

    matlab开发-随机裁剪图像生成器

    本项目着重于创建一个"随机裁剪图像生成器",这是一项对于图像分析、机器学习预处理或者数据增强至关重要的技术。这个工具允许用户从原始图像中随机提取部分区域,产生带有随机偏移和随机旋转的新图像,以增加模型...

    随机数生成器(浮点数整型数) V1.0

    《随机数生成器V1.0:理解和应用》 在信息技术领域,随机数的应用无处不在,无论是模拟仿真、加密算法、游戏开发还是数据分析,都离不开它的身影。今天我们要探讨的是一款名为“随机数生成器V1.0”的实用工具,它...

    样本序列的均值.rar_样本序列均值_生成样本序列_随机数生成器

    本话题将详细探讨如何利用随机数生成器来创建样本序列,并计算其均值。 首先,样本序列是指一系列按照特定顺序排列的数值,它们可以代表时间序列数据、实验结果或其他可量化现象的测量值。在数据分析中,我们经常...

    gan-master.zip_GaN_tensorflow_样本生成_深度学习_深度学习gan

    3. **样本生成**:在GANs中,生成器G的任务是从随机噪声向量生成新的数据样本,这些样本应与训练数据集中的真实样本难以区分。这种能力使得GANs在图像合成、视频生成、音频生成、文本生成等领域具有广泛的应用。 4....

    从完全不包含人体的图片中随机剪裁出64*128大小的用于人体检测的负样本

    2. 随机选取剪裁位置:通过随机数生成器确定64*128像素区域的起始坐标。 3. 剪裁图像:使用`cv::Rect`对象定义剪裁区域,并调用`cv::Mat::operator()()`或`cv::Mat::copyTo()`进行剪裁。 4. 检查剪裁结果:确保剪裁...

    伪随机序列生成器.ppt

    伪随机序列生成器(PRNG)是一种确定性的算法,能够将固定长度的种子(通常为比特串)扩展为更长的比特序列,这个序列在统计特性上与真正的随机序列难以区分。PRNG必须满足两个条件:一是具有延伸性,即能将种子扩展...

    DataMaker数据批量生成器

    "DataMaker数据批量生成器"是一款基于C++编程语言的工具,主要功能是自定义生成大规模的测试数据。在软件开发和测试过程中,这样的工具极其重要,因为它可以帮助开发者快速创建模拟真实环境的数据集,用于系统测试、...

    使用GAN进行数据增强以进行缺陷检测-python源码.zip

    判别器则采用类似卷积神经网络的结构,用于区分输入是真实样本还是生成器产生的样本。 在数据增强过程中,我们使用GAN生成与现有缺陷图像类似的但非完全相同的新图像。这样可以增加模型看到的缺陷多样性,帮助它...

    车牌识别:模型车牌生成器.zip

    在本项目中,"模型车牌生成器.zip" 提供了一种工具,能够生成模拟车牌图像,这对于训练车牌识别模型至关重要。 首先,我们要理解车牌识别的基本流程。一般来说,它包括以下几个步骤: 1. 图像预处理:获取到的原始...

    random-person-generator-java:个人 Java 项目 - 随机人物生成器

    个人项目 - 随机人物生成器 (Java) 这是我的个人项目。 我使用 Eclipse 用 Ja​​va 编写,创建了一个“随机人物生成器”。 当您单击“生成”按钮时,会随机生成一个人。 使用顶部的 JRadioButtons,您可以选择生成...

    IMEI批量生成器

    IMEI批量生成器是一款工具软件,主要用于快速生成大量IMEI(国际移动设备识别码)号码。IMEI是每个移动通信设备如手机、平板电脑等独一无二的标识符,由15位数字组成,用于区分全球范围内的移动设备。下面将详细阐述...

    随机数生成器-Python编写

    随机森林算法就是依赖于随机数生成器的典型例子,它在构建决策树时会随机抽取特征和样本来增加模型的多样性。 总的来说,Python的随机数生成器是编程实践中不可或缺的一部分,无论你是初学者还是经验丰富的开发者,...

    gan.rar_GAN 生成_GAN网络_gan生成样本_数据生成_生成数据

    这暗示了该代码实现了一个GAN模型,其中生成器网络接收随机噪声作为输入,并尝试生成看起来像MNIST数据集中的手写数字的图像。判别器网络则试图区分真实的数据样本和生成器产生的假样本。通过对抗性学习,两者之间的...

    数据生成器

    1. **数据生成原理**:数据生成器基于编程逻辑,通过设定一定的规则(在这个例子中是1到9999的四位数)来产生一系列连续或随机的数据。它可以按照预设的算法生成数字,确保生成的数据符合指定的格式和范围。 2. **...

Global site tag (gtag.js) - Google Analytics