Exemplo n.º 1
0
void CVT::display_GPU(void)
{
    vor_GPU();
    move_sites_GPU();

    iteration++;
    glutSwapBuffers();
}
Exemplo n.º 2
0
void CVT::compute_weighted_cvt_GPU(cv::Mat &  img, std::vector<cv::Point2d> & sites)
{
	//inint 
	int site_size = sites.size();
	cells.resize(site_size);
	for (int i = 0; i < site_size; i++)
	{
		cells[i].site = sites[i];
	}
	float max_dist_moved = FLT_MAX;
	vor_GPU(img);
}
void CVT::compute_weighted_cvt_GPU(cv::Mat &  img, std::vector<cv::Point2d> & sites)
{
	//inint 
	int site_size = sites.size();
	cells.resize(site_size);
	for (int i = 0; i < site_size; i++)
	{
		cells[i].site = sites[i];
	}

	float max_dist_moved = FLT_MAX;

	int width = img.size().width;
	int height = img.size().height;

	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
	glutInitWindowSize(width, height);
	glutInitWindowPosition(180, 100);

	glutCreateWindow("CVT");
	glEnable(GL_DEPTH_TEST);

	glViewport(0, 0, width, height);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0, width, 0, height, -1, 0);

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	pixels = new unsigned char[4 * img.size().width*img.size().height]; //4를 곱하는 이유, 한 픽셀에 rgb,알파

	int iteration = 0;
	do
	{
		vor_GPU(img); //compute voronoi
		max_dist_moved = move_sites(img);
		if (debug) std::cout << "[" << iteration << "] max dist moved = " << max_dist_moved << std::endl;
		iteration++;
	} while (max_dist_moved>max_site_displacement && iteration < this->iteration_limit);
	delete[] pixels;
	
	glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//CVT construnctor에 들어가야

	////glutMainLoop에 들어가면 계속 그림을 그리느라 바빠서 stipple을 못그린다.
	//glutMainLoop();

	if (debug) cv::waitKey();
}
Exemplo n.º 4
0
void CVT::compute_weighted_cvt_GPU(cv::Mat &  img, std::vector<cv::Point2d> & sites)
{
	//inint 
	int site_size = sites.size();
	cells.resize(site_size);
	for (int i = 0; i < site_size; i++)
	{
		cells[i].site = sites[i];
	}

	float max_dist_moved = FLT_MAX;

	int iteration = 0;
	do
	{
		vor_GPU(img); //compute voronoi
		max_dist_moved = move_sites(img);
		if (debug) std::cout << "[" << iteration << "] max dist moved = " << max_dist_moved << std::endl;
		iteration++;
	} while (max_dist_moved>max_site_displacement && iteration < this->iteration_limit);

	if (debug) cv::waitKey();
}