Example #1
0
std::vector< Vec4i > get_v_lines(Mat& img)
{
	int h = img.rows;
	int w = img.cols;

	std::vector< Vec4i > lines;
	unsigned int length_th = 200;

	for (int y = 0; y<h; y++)
	{
		int x1 = 0;
		int x2 = 0;
		int in_row = 0;
		Vec4i longest_line(0, 0, 0, 0);

		for (int x = 0; x<w; x++)
		{
			if (img.at<unsigned char>(y, x) < 140)
			{
				if (in_row == 0)
					x1 = x;
				in_row += 1;
			}
			else
			{
				if (in_row > length_th)
					lines.push_back(Vec4i(x1, y, x, y));
				in_row = 0;
			}
		}
		if (in_row > length_th)
			lines.push_back(Vec4i(x1, y, w - 1, y));
	}
	return lines;
}
Example #2
0
/* This function calls "add_line_to_node" for each line of the vocab file. */
int add_line(vocab_t **listavocab, FILE *archivo, int cat) {

	char *buffer;
	int num_nodes = 0;
	unsigned short learning = 0;
	char tipo;
	
	buffer = (char *)calloc(longest_line(archivo)+1,sizeof(char));
	rewind(archivo);
	
	while (fscanf(archivo,"%c", &tipo) != EOF) {
		// It's a word.
		if (tipo == '&') {
			if (fscanf(archivo,"%hu %*c %[^\n] %*[\n]",&learning, buffer) != EOF) {
				if (add_line_to_node(listavocab,buffer, true, cat, learning))
					num_nodes++;
			}
		// It's a category.
		} else if (tipo == ';') {
			if (fscanf(archivo," %*c %[^\n] %*[\n]", buffer) != EOF) {
				if (add_line_to_node(listavocab,buffer,false, cat, learning))
					num_nodes++;
			}
		}
	}
	
	if (buffer) {
		free(buffer);
		buffer = NULL;
	}

	return num_nodes;
}
Example #3
0
std::vector< Vec4i > get_h_lines(Mat& img)
{

	int h = img.rows;
	int w = img.cols;

	std::vector< Vec4i > lines;

	int length_th = 100;

	for (int x = 0; x<w; x++)
	{
		int y1 = 0;
		int in_row = 0;
		int longest = 0;
		Vec4i longest_line(0, 0, 0, 0);
		for (int y = 0; y<h; y++)
		{
			if (img.at<unsigned char>(y, x) < 140)
			{
				if (in_row == 0)
					y1 = y;
				in_row += 1;
			}

			else
			{
				if (in_row > length_th)
					lines.push_back(Vec4i(x, y1, x, y - 1));
				in_row = 0;
			}


		}
		if (in_row > length_th)
			lines.push_back(Vec4i(x, y1, x, h - 1));

	}
	return lines;
}