`

随机负样本生成器

 
阅读更多
#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个负样本

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

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

    SphericalDistributionsRand:两个球形分布的随机样本生成器

    它是用于从Von-Mises Fisher和Watson分布生成随机样本的MATLAB代码。 该代码是以下论文中工作的一部分: 陈玉辉等。 “ ”信号处理快报,IEEE 22.8(2015):1152-1155。 陈玉辉等。 “ ”信息融合国际会议(印刷中...

    关于随机行走数据生成的说明1

    人字映射法是一种将随机数生成器生成的整数映射到0到1之间连续实数的方法,以提高随机性的均匀性。在上述代码中,如果生成的随机数小于或等于`m/2`,则直接映射;否则,经过特殊处理后映射,确保结果在0到1范围内。...

    μ子生成器:在海平面生成宇宙射线μ子的随机样本-matlab开发

    然后使用统计算法来生成随机样本。 逆变换提供了一种从针对立体角效应校正的 μ 子角分布生成样本的方法。 Acceptance-Rejection 方法用于为实际角分布生成样本,模拟为余弦平方。 接受-拒绝方法也用于提供能量分量...

    SphericalDistributi​onsRand:两个球形分布的随机样本生成器:von Mises-Fisher、Watson。-matlab开发

    它是用于从 Von-Mises Fisher 和 Watson 分布生成随机样本的 MATLAB 代码。 该代码是以下论文中工作的一部分: 陈玉辉等。 “球对称群中的参数估计。” 信号处理快报,IEEE 22.8 (2015):1152-1155。 陈玉辉等。 ...

    生成对抗网络原理及典型模型介绍.pptx

    1. **生成器更新**:生成器接收到随机噪声作为输入,生成样本,并尝试使这些样本更接近真实数据分布。更新是基于判别器的反馈,即判别器对生成样本的错误判断概率。 2. **判别器更新**:判别器接收真实样本和生成器...

    离散分布随机采样器:快速离散分布随机采样生成器。-matlab开发

    从离散分布生成随机样本。 使用 Gumbel 分布的属性来避免速度循环。 输入: 问题 [QN] 如果 type=='prob',则prob(:,n) 是第 n 个样本的概率向量,即概率(样本(n)== q)=概率(q,n)/总和(概率(:,n)) ...

    基于机器学习利用较少样本数据生成卡通图的算法研究.pdf

    生成器尝试从随机噪声中创造出逼真的图像,而判别器则试图区分生成的图像和真实图像。在训练过程中,两者相互竞争,直到生成器可以生成足以“欺骗”判别器的图像。在卡通图像生成中,可以训练一个GAN,使其学习从...

    name-machine:生成现实的随机美国男性和女性名字

    它喜欢被用来生成用于测试和演示的样本数据! NameGenerator generator = new NameGenerator (); // generate 1000 female names List&lt; Name&gt; names = generator . generateNames( 1000 , Gender . FEMALE ); // ...

    伪随机数与准随机数的比较

    传统的随机数生成法主要采用逆转...数生成方法,即准随机数生成器。实验验证了准随机数生成器得到的随机数的差异性优于传统方法。最后,提出一种基于准 随机数生成器的蒙特卡罗积分方法,结果优于传统的蒙特卡罗积分。

    第8章-生成对抗网络.pdf

    生成器网络(Generator)的目标是从随机噪声向量(潜在空间中的随机点)出发,生成尽可能接近真实数据的样本。这个过程可以视为一个编码-解码的过程,其中噪声向量作为输入,经过一系列的神经网络层转换成图像或其他...

    rando-php:RandoPhp是一个开源库,实现了随机生成器(Integer,Char,Byte,Sequences,Boolean),并从数组中获取随机样本

    使用此软件包,您可以: 绘制:从数组中提取随机项目(样本)。 当您要“绘制”一些数字或项目时,这很有用; 生成:用于创建随机像整数,字节,布尔型,浮点型,经度/纬度坐标,炭(数字,字母,字母数字)项; 如...

    基于随机森林的特征提取方法

    2) 将无标签的测试数据导入随机森林模型中,生成全体数据(训练样本和测试数据)的相似性矩阵; 3)对该相似性矩阵进行 多维尺度变换得到全体数据的低维数据表示,即低维特征,使得原高维数据在低维空间中具有更好的可分性...

    基于子样本集构建的DCGANs训练方法.docx

    生成器的任务是从随机向量z出发生成逼真的样本,以尽可能接近真实数据分布。判别器则负责区分输入样本是来自训练数据集还是生成器的产出。 GANs的训练过程是一个动态博弈过程,目标是使生成器和判别器达到纳什均衡...

    第七章_生成对抗网络1

    在数学上,GAN包含一个生成器G和一个判别器D,其中G将随机噪声z转换为假样本x_g,D则尝试区分x_g与真实样本x。它们通常都基于神经网络,并通过反向传播更新参数。 7.1.3 GAN的目标函数是什么? GAN的目标函数由两...

    一文读懂生成对抗网络GANs附学习资源.pdf

    1. 生成器G接收一个简单的随机噪声作为输入,如高斯分布或均匀分布,然后将其转化为与训练数据类似的新样本。 2. 判别器D接收到真实数据和生成器G产生的样本,试图预测哪些是真实的,哪些是伪造的。 3. 在每次迭代中...

    randompolygons:随机凸多边形场生成器脚本

    随机凸多边形场发生器 言论自由 小型API,易于使用 这些脚本以Java和JavaScript编写,允许用户生成随机放置,形状随机的凸多边形的2D平面的坐标。 请参阅每个语言文件夹中的自述文件,以了解有关特定实现的更多信息...

    第15章 SPSS中随机化过程的实现.ppt

    - 设定随机种子:选择随机数字生成器,可以是兼容SPSS12(S)或Mersenne扭曲器(M),并设定随机数产生的起点(随机种子)。 - 生成随机数字:通过“计算变量”对话框生成随机数。 - 随机数字排序:使用“个案排...

Global site tag (gtag.js) - Google Analytics