分享

LoadTxt2Vec

 mscdj 2018-02-02
bool LoadTxt2Vec(string path, string sep, vector<vector<float>>& data)
{
	data.clear();
	int length;
	char* buffer;
	ifstream inf(path, ios::binary);
	inf.seekg(0, ios::end);
	length = inf.tellg();
	inf.seekg(0, ios::beg);
	if (length < 1) return 0;
	buffer = new char[length];
	inf.read(buffer, length);
	string str = buffer;
	int  pos0 = 0;
	int pos = str.find('\r\n', pos0);
	stringstream Oss;
	float Result;
	vector<float> num;
	while (pos <str.size() && pos>-1 && pos != pos0)
	{
		string str1 = str.substr(pos0, pos - pos0) + sep;
		int pos2 = 0;
		int pos1 = str1.find(sep, pos2);
		while (pos1 <str1.size() && pos1>-1 && pos1 != pos2)
		{
			string str2 = str1.substr(pos2, pos1 - pos2);
			int i = 0, j = 0;
			bool b = 0;
			for (; i<str2.size(); i++)
			{
				if ((str2[i] <= '9' && str2[i] >= '0') || str2[i] == '+' || str2[i] == '-') break;
				else j++;
			}
			for (i++; i<str2.size(); i++)
			{
				if (!((str2[i] <= '9' && str2[i] >= '0') || str2[i] == '.' || str2[i] == 'e' || str2[i] == 'E')) break;
				else if (str2[i] == 'e' || str2[i] == 'E')
				{
					if (i == str2.size() || !(str2[i] <= '9' && str2[i] >= '0' || str2[i] == '-') || b) break;
					b = 1;
				}
			}
			string str3 = str2.substr(j, i - j);
			Oss << str3;
			Oss >> Result;
			Oss.clear();
			num.push_back(Result);
			pos2 = pos1 + sep.size();
			pos1 = str1.find(sep, pos2);
		}
		pos0 = pos + 2;
		data.push_back(num);
		num.clear();
		pos = str.find('\r\n', pos0);
	}
	return 1;
}
void Gamma(Mat& src, double gamma)
{
uchar lutData[256];
float value;
for (int i = 0; i<256; i++)
{
value = pow((float)i / 255.0f, gamma)*255.0f;
if (value>255)
value = 255;
if (value<0)
value = 0;
lutData[i] = (uchar)value;
}
Mat lut(1, 256, CV_8UC1, lutData);
LUT(src, lut, src);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多