Ejemplo n.º 1
0
int Match(Player p,FONT *font3)
{
    BITMAP *end_=0;
    FILE *fp=fopen("ending.txt", "r");
    if(fp==0)
    {
        printf("The file didn't open.\n");
        return 0;
    }
    while(!feof(fp))
    {
        int de=0;
        char ch=' ',com=' ',rules[30]=" ",attribute[18]="",condition[18]="";
        fscanf(fp,"%s",rules);
        if(feof(fp))break;
        while(ch!='\n')
        {
            if(feof(fp))break;
            if(ch=='(' && de==0)
            {
                if(feof(fp))break;
                fscanf(fp,"%s %c %s",attribute,&com,condition);
                condition[strlen(condition)-1]='\0';
                if(Rematch(p,attribute,com,condition)==0)
                {
                    de=1;
                }
            }
            fscanf(fp,"%c",&ch);
        }
        if(de==0)
        {
            rule(&end_,rules);
            textprintf_ex(screen, font3, 50, 25,makecol(0,0,0), makecol(255,255,255),"You become a %s",rules);
            rest(10000);
            Write_Story(rules,p.name);
            destroy_bitmap(end_);
            return 1;
        }
    }
    rule(&end_,"nobody");
    textprintf_ex(screen, font3, 50, 25,makecol(0,0,0), makecol(255,255,255),"You become nobody");
    Write_Story("nobody",p.name);
    rest(10000);
    return 1;
}
void CStereoMatching::MatchOneLayer(cv::Mat disparity[], int Pyrm_depth)
{
	if (Verbose>=1)
		printf("\tprocessing layer %d...\n",Pyrm_depth);
	clock_t start = clock();
	cv::Mat image[2], mask[2];
	cv::Mat image_inv[2], mask_inv[2];
	image[0] = m_data->imagePyrm[Pyrm_depth][0];
	image[1] = m_data->imagePyrm[Pyrm_depth][1];
	mask[0]  = m_data->maskPyrm[Pyrm_depth][0];
	mask[1]  = m_data->maskPyrm[Pyrm_depth][1];
	image_inv[0] = image[1];
	image_inv[1] = image[0];
	mask_inv[0] = mask[1];
	mask_inv[1] = mask[0];
	FindMargin(margin[0], m_data->maskPyrm[Pyrm_depth][0]);
	FindMargin(margin[1], m_data->maskPyrm[Pyrm_depth][1]);
	if (Pyrm_depth == 0)
	{
		LowestLevelInitialMatch(image, mask, disparity[0], true);
		LowestLevelInitialMatch(image_inv, mask_inv, disparity[1], false);
	}
	else
	{
		HighLevelInitialMatch(image, mask, disparity[0], Pyrm_depth, true);
		HighLevelInitialMatch(image_inv, mask_inv, disparity[1], Pyrm_depth, false);
	}
// 	DisparityToCloud<short>(disparity[0], mask[0], Q, 0, true, 10);
// 	m_data->SaveMat(disparity[0], "disparity0.dat");
// 	m_data->SaveMat(disparity[1], "disparity01.dat");
	SmoothConstraint(disparity[0], true);
	SmoothConstraint(disparity[1], false);
//	DisparityToCloud<short>(disparity[0], mask[0], Q, 0, true, 11);
	//m_data->SaveMat(disparity[0], "disparity1.dat");
	//m_data->SaveMat(disparity[1], "disparity11.dat");
	OrderConstraint(disparity[0], true);
	OrderConstraint(disparity[1], false);
	//m_data->SaveMat(disparity[0], "disparity2.dat");
	//m_data->SaveMat(disparity[1], "disparity21.dat");
	UniquenessContraint<short>(disparity);
//m_data->SaveMat(disparity[0], "disparity3.dat");
//m_data->SaveMat(disparity[1], "disparity31.dat");
// 	MedianFilter(disparity[0], mask[0], 1, true);
// 	MedianFilter(disparity[1], mask[1], 1, false);
	Rematch(image, mask, disparity[0], true);
	Rematch(image_inv, mask_inv, disparity[1], false);
// 	SmoothConstraint(disparity[0], true);
// 	SmoothConstraint(disparity[1], false);
// 	OrderConstraint(disparity[0], true);
// 	OrderConstraint(disparity[1], false);
	UniquenessContraint<short>(disparity);
//m_data->SaveMat(disparity[0], "disparity4.dat");
//m_data->SaveMat(disparity[1], "disparity41.dat");
	MedianFilter(disparity[0], mask[0], 1, true);
	MedianFilter(disparity[1], mask[1], 1, false);
	
//  m_data->SaveMat(disparity[0], "disparity50.dat");
//  m_data->SaveMat(disparity[1], "disparity51.dat");
// 	DisparityToCloud<short>(disparity[0], mask[0], Q, Pyrm_depth, true, 11+10*Pyrm_depth);
	int iteration = 30+Pyrm_depth*30;
//	clock_t part = clock();
	DisparityRefine(disparity[0], image, iteration, true);
	DisparityRefine(disparity[1], image_inv, iteration, false);
//	printf("\ttime: %.3f s\n", double(clock()-part)/1e3);
// 	disparity[0].convertTo(disparity[0],CV_64FC1);
// 	disparity[1].convertTo(disparity[1],CV_64FC1);
//	m_data->SaveMat(disparity[0], "disparity6.dat");
//	m_data->SaveMat(disparity[1], "disparity61.dat");
// 	char filename[512];
// 	sprintf(filename, "disparity%d_0.dat", Pyrm_depth);
// 	m_data->SaveMat(disparity[0], filename);
// 	sprintf(filename, "disparity%d_1.dat", Pyrm_depth);
// 	m_data->SaveMat(disparity[1], filename);
	UniquenessContraint<double>(disparity);
	
// 	m_data->SaveMat(disparity[0], "disparity70.dat");
	printf("\ttime: %.3f s\n", double(clock()-start)/1e3);
}