Пример #1
0
void DataReader::read_one(){
	//	could block here when pre-buffer enough Datum
	Datum *datum = pair->free.pop();
	datum->Clear();
	DataParameter data_param = param.data_param();

	if (data_param.shuffle()) cur_idx = Dragon::get_random_value() % indices.size();
	else cur_idx = (cur_idx + 1) % indices.size();

	IplImage *img = cvLoadImage((data_param.source() + "/" + indices[cur_idx].data()).c_str());
	DataTransformer<float>::transform(img, datum);
	cvReleaseImage(&img);
	datum->set_label(indices[cur_idx].label());
	pair->full.push(datum);
}