Arbin union1(Arbin a1,Arbin a2)// Ici, la fonction copieArbre permet de rendre la methode fonctionnelle { if(a1==NULL) return copieArbre(a2); else if(a2==NULL) return copieArbre(a1); else { if(a1->v <= a2->v) return e(copieArbre(ag(a1)),a1->v,union1(ad(a1),a2)); else return e(union1(a1,ag(a2)),a2->v,copieArbre(ad(a2))); } }
Arbin ins(Arbin a,ARBRE_BIN_S x) { Arbin tmp=e(NULL,x,NULL); Arbin u=union1(a,tmp); free(tmp); return u; }
int main() { Liste l1=Exemple1(); Liste l2=Exemple2(); printf("Liste1 de 7 elements :\n"); afficherliste(l1); printf("Liste2 de 6 elements :\n"); afficherliste(l2); Arbin a1=la(l1); Arbin a2=la(l2); printf("Affichage de l'arbre1\n"); afficherArbre(a1); printf("Affichage de l'arbre2\n"); afficherArbre(a2); printf("\n"); Liste l3=al(a1); printf("al sur arbre1 :\n"); afficherliste(l3); Arbin u0=union0(a1,a2); Arbin u1=union1(a1,a2); printf("Affichage de union0 :\n"); afficherArbre(u0); printf("Affichage de union1 :\n"); afficherArbre(u1); printf("Oter le minimum de l'arbre1\n"); Arbin o=om(a1); afficherArbre(o); Arbin i=ins(a1,42); printf("Insertion de 42 dans l'arbre1\n"); afficherArbre(i); freeListe(l1); freeListe(l2); freeListe(l3); freeArbre(a1); freeArbre(a2); freeArbre(u0); freeArbre(u1); freeArbre(o); freeArbre(i); return 0; }
int main(){ Elem e1[10]={65,66,67,68,69,70}; Elem e2[10]={69,70,71,72,73,74,75,76}; Conjunto c1=crea(e1,6); Conjunto c2=crea(e2,8); imprime(union1(c1,c2)); puts(""); printf("%d",cardinalidad(union1(c1,c2))); puts(""); imprime(interseccion(c1,c2)); puts(""); printf("%d\n",cardinalidad(interseccion(c1,c2))); imprime(diferencia(c1,c2)); return 0; }
int main() { link *head1 = NULL; link *head2 = NULL; link *curr1 = NULL;link *head4 = NULL;link *head5=NULL;link *head6=NULL; link *curr2 = NULL; link *head3 = NULL; link *curr3 = NULL;link *curr4 = NULL;link *curr5=NULL;link *curr6=NULL; int choice; do { printf("1. insert in first\n"); printf("2. insert in second\n"); printf("3. display first\n"); printf("4. display second\n"); printf("5. union\n"); printf("6. inter\n"); printf("7. first-second\n"); printf("8. second-first\n"); printf("enter ur choice: "); scanf("%d",&choice); switch(choice) { int nums; int num; int i; case 1: printf("enter the number of numbers u want to enter:"); scanf("%d",&nums); printf("OK now enter the numbers\n"); for(i=0;i<nums;i++) { scanf(" %d",&num); insert(num,&head1,&curr1); } break; case 2: printf("enter the number of numbers u want to enter:"); scanf("%d",&nums); printf("OK now enter the numbers\n"); for(i=0;i<nums;i++) { scanf(" %d",&num); insert(num,&head2,&curr2); } break; case 3: display(head1); break; case 4: display(head2); break; case 5: union1(head1,head2,&head3,&curr3); display(head3); break; case 6: inter(head1,head2,&head4,&curr4); display(head4); break; case 7: inter(head1,head2,&head4,&curr4); diff(head1,head4,&head5,&curr5); display(head5); break; case 8: inter(head1,head2,&head4,&curr4); diff(head2,head4,&head6,&curr6); display(head6); break; default: printf("enter a valid choice"); } } while(choice!=9); return 0; }
void CDoProcess::DoProcess(CMData* pData,SubTestResult *testItem) { // Local iconic variables Hobject Image=pData->m_Image; Hlong m_thred_low1=m_Parameters.m_thred_low1; Hlong m_thred_high1=m_Parameters.m_thred_high1; Hlong m_thred_low2=m_Parameters.m_thred_low2; Hlong m_thred_high2=m_Parameters.m_thred_high2; Hlong m_thred; ///////// if (m_thred_low1>m_thred_high1) { m_thred=m_thred_low1; m_thred_low1=m_thred_high1; m_thred_high1=m_thred; } if (m_thred_low2>m_thred_high2) { m_thred=m_thred_low2; m_thred_low2=m_thred_high2; m_thred_high2=m_thred; } /////////////////////////////////////////////////////// // Local iconic variables Hobject Region, ConnectedRegions, SelectedRegions; Hobject RegionUnion, RegionFillUp, Contours, Rectangle1; Hobject Rectangle2, ImageReduced1, ImageReduced2, Region1; Hobject Region2, RegionDilation1, RegionErosion1, RegionDilation2; Hobject RegionErosion2; // Local control variables HTuple ModelID,Area;//Row1, Column1, Radius1; HTuple Row11, Column11, Row12, Column12; HTuple Row21, Column21, Row22, Column22; //////////////////////////////////////////////////////////// // Local control variables HTuple Row; HTuple Column; // dev_update_off(...); only in hdevelop try { ///Row_model_center = 237.659; //Column_model_center = 339.212; /*gen_circle(&Circle5, Row, Column,m_Parameters.radius_ext); gen_circle(&Circle6, Row, Column,m_Parameters.radius_inner); difference(Circle5, Circle6, &RegionDifference_median); reduce_domain(Image, RegionDifference_median, &ImageReduced_median); intensity(RegionDifference_median, Image, &Mean_median, &Deviation_median); fast_threshold(ImageReduced_median, &Region_median, m_Parameters.radius_inner_thred, 255, 1);//Mean_median*1.2 connection(Region_median, &ConnectedRegions_median); select_shape(ConnectedRegions_median, &SelectedRegions_median, "area", "and", m_Parameters.radius_ext_extract_size, 99999); union1(SelectedRegions_median, &RegionUnion_median); area_center(RegionUnion_median, &Area_baoChiJia, &Row_baoChiJia, &Column_baoChiJia);*/ //********************************************************** threshold(Image, &Region, 0, m_Parameters.radius_inner_thred); connection(Region, &ConnectedRegions); select_shape(ConnectedRegions, &SelectedRegions, "area", "and", m_Parameters.radius_ext_extract_size, 149999); union1(SelectedRegions, &RegionUnion); fill_up(RegionUnion, &RegionFillUp); area_center(RegionFillUp, &Area, &Row, &Column); /////////////////////////////////// /*if (!_access(m_Parameters.CenterOcrModelRegion.c_str(),0)) { wstring msg = _T("Set Region already Exit.OverWrite or Not?"); if (MessageBox(NULL,msg.c_str(),_T("ReadFile Error"),MB_OK||MB_CANCELTRYCONTINUE)==IDOK) { write_region(RegionFillUp,m_Parameters.CenterOcrModelRegion.c_str()); } } else*/ write_region(RegionFillUp,m_Parameters.CenterOcrModelRegion.c_str()); ///////////////////////////////////////// gen_contour_region_xld(RegionFillUp, &Contours, "border"); create_shape_model_xld(Contours, 1, -0.69, 0.79, "auto", "auto", "ignore_local_polarity", 5, &ModelID); //匹配数据 /*if (!_access(m_Parameters.CenterOcrModelName.c_str(),0)) { wstring msg = _T("Set Model already Exit.OverWrite or Not?"); if (MessageBox(NULL,msg.c_str(),_T("ReadFile Error"),MB_OK||MB_CANCELTRYCONTINUE)==IDOK) { write_shape_model(ModelID,m_Parameters.CenterOcrModelName.c_str()); } } else*/ write_shape_model(ModelID,m_Parameters.CenterOcrModelName.c_str()); //***************************************************************** Row11=m_Parameters.YMin1; Row12=m_Parameters.YMin1+m_Parameters.YMax1; Column11=m_Parameters.XMin1; Column12=m_Parameters.XMin1+m_Parameters.XMax1; Row21=m_Parameters.YMin2; Row22=m_Parameters.YMin2+m_Parameters.YMax2; Column21=m_Parameters.XMin2; Column22=m_Parameters.XMin2+m_Parameters.XMax2; gen_rectangle1(&Rectangle1, Row11, Column11, Row12, Column12); gen_rectangle1(&Rectangle2, Row21, Column21, Row22, Column22); reduce_domain(Image, Rectangle1, &ImageReduced1); reduce_domain(Image, Rectangle2, &ImageReduced2); threshold(ImageReduced1, &Region1, m_Parameters.m_thred_low1, m_Parameters.m_thred_high1); threshold(ImageReduced2, &Region2, m_Parameters.m_thred_low2, m_Parameters.m_thred_high2); dilation_circle(Region1, &RegionDilation1, 3.5); erosion_circle(RegionDilation1, &RegionErosion1, m_Parameters.region_erosion1_size); dilation_circle(Region2, &RegionDilation2, 3.5); erosion_circle(RegionDilation2, &RegionErosion2, m_Parameters.region_erosion2_size); //创建模板时 保存区域和区域图片。在提取区域时,因为正常运行时每次都要用,不能使用 /*if (!_access(m_Parameters.CenterOcrModelRegion1.c_str(),0)) { wstring msg = _T("Set Region already Exit.OverWrite or Not?"); if (MessageBox(NULL,msg.c_str(),_T("ReadFile Error"),MB_OK||MB_CANCELTRYCONTINUE)==IDOK) { write_region(RegionErosion1,m_Parameters.CenterOcrModelRegion1.c_str()); } } else*/ write_region(RegionErosion1,m_Parameters.CenterOcrModelRegion1.c_str()); /*if (!_access(m_Parameters.CenterOcrModelRegion2.c_str(),0)) { wstring msg = _T("Set Region already Exit.OverWrite or Not?"); if (MessageBox(NULL,msg.c_str(),_T("ReadFile Error"),MB_OK||MB_CANCELTRYCONTINUE)==IDOK) { write_region(RegionErosion2,m_Parameters.CenterOcrModelRegion2.c_str()); } } else*/ write_region(RegionErosion2,m_Parameters.CenterOcrModelRegion2.c_str()); ///////////////////////////////////////////////// // Number_QiPao=1; if (1) { //pData->m_isFail= false; //testItem->m_bFailSubTest = false; pData->m_center_y2=Row[0].D(); pData->m_center_x2=Column[0].D(); } else { //testItem->m_ErrorMsg = "Error No Find Center"; //testItem->m_ErrorY = 250; //testItem->m_ErrorX = 350; //testItem->m_ErrorR = 55; //set_color(pData->m_ShowHWindow,"red"); //disp_region(SelectedRegions_qiPao_extract,pData->m_ShowHWindow); //disp_circle(pData->m_ShowHWindow,Row_center,Column_center,85); } set_color(pData->m_ShowHWindow,"blue"); disp_obj(Contours,pData->m_ShowHWindow); set_color(pData->m_ShowHWindow,"green"); disp_region(Rectangle1,pData->m_ShowHWindow); disp_region(Rectangle2,pData->m_ShowHWindow); disp_region(RegionErosion1,pData->m_ShowHWindow); disp_region(RegionErosion2,pData->m_ShowHWindow); set_color(pData->m_ShowHWindow,"red"); /////// } catch (HException &except) { pData->m_isFail = true; testItem->m_bFailSubTest = true; pData->m_orientationPhi=0; //testItem->m_ErrorMsg = except.file; //testItem->m_ErrorMsg += " "; //testItem->m_ErrorMsg += except.line; //testItem->m_ErrorMsg += " "; //testItem->m_ErrorMsg += except.message; testItem->m_ErrorY = 1; testItem->m_ErrorX = 1; testItem->m_ErrorR = 4; } }
Arbin om(Arbin a) { Arbin atmp=union1(ag(a),ad(a)); return atmp; }
void CDoProcess::DoProcess(CMData* pData,SubTestResult *testItem) { try { Hobject FindImage,ImageReduced,EllipseObj; Hobject ModelRegions, ConnectedRegions, SelectedRegions,ModelImages,SelectedRegionsSize,RegionClosing,RegionUnion,RegionFillUp,RegionOpening; Hlong Contrast = m_Parameters.m_Contrast; HTuple Row2, Column2, Radius2; Hobject regional_Internal,regional_Out; get_image_size (pData->m_Image, &Column2, &Row2); gen_ellipse(&EllipseObj, Row2/2, Column2/2, 0, m_Parameters.LongAxis, m_Parameters.ShortAxis); if (ShowObject&&pData->m_isDebug) { set_color(pData->m_ShowHWindow,"yellow"); disp_obj(EllipseObj,pData->m_ShowHWindow); } reduce_domain(pData->m_Image, EllipseObj, &ImageReduced); inspect_shape_model(ImageReduced, &ModelImages, &ModelRegions, 1, Contrast); connection(ModelRegions, &ConnectedRegions); //**============================================================== // **选择区域这条更改,原来默认是700,现在我想改成可调的,我现在就设的40 select_shape(ConnectedRegions, &SelectedRegionsSize, "area", "and", m_Parameters.Select_Shape_Size, 99999); // ** 添加这句union1 closing_circle (SelectedRegionsSize, &RegionClosing, 400.5); union1(RegionClosing, &RegionUnion); fill_up (RegionUnion, &RegionFillUp); opening_circle (RegionFillUp, &RegionOpening, m_Parameters.OutlierRemover+0.5); Hlong TempNumber; count_obj(RegionOpening,&TempNumber); if (TempNumber<1) { pData->m_isFail = true; testItem->m_bFailSubTest = true; if (pData->m_isDebug) { set_color(pData->m_ShowHWindow,"green"); set_tposition( pData->m_ShowHWindow,120, 0); #ifdef _ENGLISH write_string(pData->m_ShowHWindow,"Shell center not found"); #else write_string(pData->m_ShowHWindow,"圆中心未找到"); #endif } //pData->m_center_x=50; //pData->m_center_y=50; //pData->r_real=40; //return; } //*============================================================== double CenterRow, CenterColumn, CenterRadius; smallest_circle(RegionOpening, &CenterRow, &CenterColumn, &CenterRadius); Hobject circle; if ((m_Parameters.XMin<CenterColumn)&&(CenterColumn<m_Parameters.XMax)&&(m_Parameters.YMin<CenterRow)&&(CenterRow<m_Parameters.YMax)&&(CenterRadius<m_Parameters.RMax)&&(CenterRadius>m_Parameters.RMin)) { pData->m_center_x=CenterColumn; pData->m_center_y=CenterRow; pData->r_real=CenterRadius; set_color(pData->m_ShowHWindow,"cyan"); gen_circle(&circle, pData->m_center_y, pData->m_center_x, pData->r_real); disp_obj(circle,pData->m_ShowHWindow); } else { pData->m_isFail = true; testItem->m_bFailSubTest = true; pData->m_center_x=50; pData->m_center_y=50; pData->r_real=40; set_color(pData->m_ShowHWindow,"red"); gen_circle(&circle, pData->m_center_y, pData->m_center_x, pData->r_real); disp_obj(circle,pData->m_ShowHWindow); if (pData->m_isDebug) { set_color(pData->m_ShowHWindow,"green"); set_tposition( pData->m_ShowHWindow,5, 145); #ifdef _ENGLISH write_string(pData->m_ShowHWindow,"Fitted shell center not match the qualifications"); #else write_string(pData->m_ShowHWindow,"拟合得到的圆的中心坐标及半径与限定条件不符"); #endif } //return; } //set_color(pData->m_ShowHWindow,"red"); //Hobject circle,ContCircle; //gen_circle(&circle, pData->m_center_y, pData->m_center_x, pData->r_real); //disp_obj(circle,pData->m_ShowHWindow); } catch (HException &except) { if (pData->m_isDebug) { set_color(pData->m_ShowHWindow,"green"); set_tposition( pData->m_ShowHWindow,25, 145); #ifdef _ENGLISH write_string(pData->m_ShowHWindow,"CenterHC23 parameter values error,please re-adjust"); #else write_string(pData->m_ShowHWindow,"CenterHC23程序参数值出错,请重新调节参数"); #endif } pData->m_isFail = true; testItem->m_bFailSubTest = true; pData->m_center_x=50; pData->m_center_y=50; pData->r_real=40; } }
void CDoProcess::DoProcess(CMData* pData,SubTestResult *testItem) { // Local iconic variables Hobject Image=pData->m_Image; Hlong m_contrast_low1=m_Parameters.m_contrast_low; Hlong m_contrast_high1=m_Parameters.m_contrast_high; Hlong m_thred; ///////// if (m_contrast_low1>m_contrast_high1) { m_thred=m_contrast_low1; m_contrast_low1=m_contrast_high1; m_contrast_high1=m_thred; } if (m_Parameters.radius_inner>m_Parameters.radius_ext) { m_thred=m_Parameters.radius_inner; m_Parameters.radius_inner=m_Parameters.radius_ext; m_Parameters.radius_ext=m_thred; } Hobject Circle5, Circle6, RegionDifference_median,ModelContours; Hobject ImageReduced_median, Region_median, ConnectedRegions_median; Hobject SelectedRegions_median, RegionUnion_median, ImageReduced_median_extract; Hobject ModelImages, ModelRegions; // Local control variables HTuple Mean_median, Deviation_median; HTuple Area_baoChiJia, Row_baoChiJia, Column_baoChiJia; HTuple ModelID, Row2, Column2, Angle2, Score2; // Local control variables HTuple Row=pData->m_center_y; HTuple Column= pData->m_center_x; // dev_update_off(...); only in hdevelop try { ///Row_model_center = 237.659; //Column_model_center = 339.212; gen_circle(&Circle5, Row, Column,m_Parameters.radius_ext); gen_circle(&Circle6, Row, Column,m_Parameters.radius_inner); difference(Circle5, Circle6, &RegionDifference_median); reduce_domain(Image, RegionDifference_median, &ImageReduced_median); intensity(RegionDifference_median, Image, &Mean_median, &Deviation_median); fast_threshold(ImageReduced_median, &Region_median, m_Parameters.radius_inner_thred, 255, 1);//Mean_median*1.2 connection(Region_median, &ConnectedRegions_median); select_shape(ConnectedRegions_median, &SelectedRegions_median, "area", "and", m_Parameters.radius_ext_extract_size, 99999); union1(SelectedRegions_median, &RegionUnion_median); area_center(RegionUnion_median, &Area_baoChiJia, &Row_baoChiJia, &Column_baoChiJia); //创建模板时 保存区域和区域图片。在提取区域时,因为正常运行时每次都要用,不能使用 /*if (!_access(m_Parameters.CenterOcrModelRegion.c_str(),0)) { wstring msg = _T("Set Region already Exit.OverWrite or Not?"); if (MessageBox(NULL,msg.c_str(),_T("ReadFile Error"),MB_OK||MB_CANCELTRYCONTINUE)==IDOK) { write_region(RegionUnion_median,m_Parameters.CenterOcrModelRegion.c_str()); } } else*/ write_region(RegionUnion_median,m_Parameters.CenterOcrModelRegion.c_str()); reduce_domain(Image, RegionUnion_median, &ImageReduced_median_extract); //write_image(ImageReduced_median_extract, "bmp", 0, "D:/SLACTST/CH1.101/模板字符区域图片.bmp"); // /*if (!_access(m_Parameters.CenterOcrModelPicture.c_str(),0)) { wstring msg = _T("Set Picture already Exit.OverWrite or Not?"); if (MessageBox(NULL,msg.c_str(),_T("ReadFile Error"),MB_OK||MB_CANCELTRYCONTINUE)==IDOK) { write_image(ImageReduced_median_extract, "bmp", 0,m_Parameters.CenterOcrModelPicture.c_str()); } } else write_image(ImageReduced_median_extract, "bmp", 0,m_Parameters.CenterOcrModelPicture.c_str()); */ //匹配数据 inspect_shape_model(ImageReduced_median_extract, &ModelImages, &ModelRegions, 1, 25); create_shape_model(ImageReduced_median_extract, 4, 0, HTuple(360).Rad(), "auto", "auto", "use_polarity", m_contrast_high1, m_contrast_low1, &ModelID); find_shape_model(Image, ModelID, 0, HTuple(360).Rad(), 0.5, 1, 0.5, "least_squares", 0, 0.9, &Row2, &Column2, &Angle2, &Score2); /*if (!_access(m_Parameters.CenterOcrModelName.c_str(),0)) { wstring msg = _T("Set Model already Exit.OverWrite or Not?"); if (MessageBox(NULL,msg.c_str(),_T("ReadFile Error"),MB_OK||MB_CANCELTRYCONTINUE)==IDOK) { write_shape_model(ModelID,m_Parameters.CenterOcrModelName.c_str()); } } else*/ write_shape_model(ModelID,m_Parameters.CenterOcrModelName.c_str()); //*查看模板提取效果 set_shape_model_origin(ModelID, -Row_baoChiJia, -Column_baoChiJia); get_shape_model_contours(&ModelContours, ModelID, 1); /////////////////////////////////////////////////*/ // Number_QiPao=1; if (1) { //pData->m_isFail= false; //testItem->m_bFailSubTest = false; pData->m_center_y2=Row_baoChiJia[0].D(); pData->m_center_x2=Column_baoChiJia[0].D(); } else { //testItem->m_ErrorMsg = "Error No Find Center"; //testItem->m_ErrorY = 250; //testItem->m_ErrorX = 350; //testItem->m_ErrorR = 55; //set_color(pData->m_ShowHWindow,"red"); //disp_region(SelectedRegions_qiPao_extract,pData->m_ShowHWindow); //disp_circle(pData->m_ShowHWindow,Row_center,Column_center,85); } set_color(pData->m_ShowHWindow,"blue"); disp_obj(ModelContours,pData->m_ShowHWindow); set_color(pData->m_ShowHWindow,"green"); disp_region(RegionUnion_median,pData->m_ShowHWindow); disp_region(Circle5,pData->m_ShowHWindow); disp_region(Circle6,pData->m_ShowHWindow); set_color(pData->m_ShowHWindow,"red"); /////// } catch (HException &except) { pData->m_isFail = true; testItem->m_bFailSubTest = true; pData->m_orientationPhi=0; //testItem->m_ErrorMsg = except.file; //testItem->m_ErrorMsg += " "; //testItem->m_ErrorMsg += except.line; //testItem->m_ErrorMsg += " "; //testItem->m_ErrorMsg += except.message; testItem->m_ErrorY = 1; testItem->m_ErrorX = 1; testItem->m_ErrorR = 4; } }