void MriWatcherGUI::Combine() { QString m_filename = QFileDialog::getSaveFileName( this, tr("Save As"), QDir::currentPath(), tr("*.gipl *.hdr *.mha *.mhd") ); if( m_filename.isEmpty() ) { g_combine->setDown(false); return; } if( m_filename.lastIndexOf(".") == -1 ) { m_filename += ".gipl"; } int xc; int yc; int zc; m_imagemanager.GetCrosshair(&xc, &yc, &zc); ImageType::Pointer m_newimage = CreateNewImage(m_imagesize[0], m_imagesize[1], m_numberofimages, m_imagespacing[0], m_imagespacing[1], m_imagespacing[2]); IteratorType m_itnewimage(m_newimage, m_newimage->GetLargestPossibleRegion() ); m_itnewimage.GoToBegin(); for( int z = 0; z < m_numberofimages; z++ ) { ImageType::Pointer m_image = m_imageframelist[z]->g_imageframe->GetInputImage2(); IteratorType m_itimage(m_image, m_image->GetLargestPossibleRegion() ); m_itimage.GoToBegin(); for( unsigned int i = 0; i < zc * m_imagesize[0] * m_imagesize[1]; i++ ) { ++m_itimage; } for( unsigned int y = 0; y < m_imagesize[0]; y++ ) { for( unsigned int x = 0; x < m_imagesize[1]; x++ ) { m_itnewimage.Set(m_itimage.Get() ); ++m_itimage; ++m_itnewimage; } } } WriterType::Pointer writer = WriterType::New(); writer->SetFileName(m_filename.toLatin1().constData() ); writer->SetInput(m_newimage); writer->Update(); g_combine->setDown(false); }
void SCH_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) { SCH_ITEM* item = GetScreen()->GetCurItem(); wxPoint gridPosition = GetGridPosition( aPosition ); if( ( GetToolId() == ID_NO_TOOL_SELECTED ) || ( item && item->GetFlags() ) ) { m_canvas->SetAutoPanRequest( false ); SetRepeatItem( NULL ); if( item && item->GetFlags() ) { switch( item->Type() ) { case SCH_LABEL_T: case SCH_GLOBAL_LABEL_T: case SCH_HIERARCHICAL_LABEL_T: case SCH_TEXT_T: case SCH_SHEET_PIN_T: case SCH_SHEET_T: case SCH_BUS_WIRE_ENTRY_T: case SCH_BUS_BUS_ENTRY_T: case SCH_JUNCTION_T: case SCH_COMPONENT_T: case SCH_FIELD_T: case SCH_BITMAP_T: case SCH_NO_CONNECT_T: addCurrentItemToList(); return; case SCH_LINE_T: // May already be drawing segment. break; default: wxFAIL_MSG( wxT( "SCH_EDIT_FRAME::OnLeftClick error. Item type <" ) + item->GetClass() + wxT( "> is already being edited." ) ); item->ClearFlags(); break; } } else { item = LocateAndShowItem( aPosition ); } } switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: break; case ID_HIGHLIGHT: HighlightConnectionAtPosition( aPosition ); break; case ID_HIERARCHY_PUSH_POP_BUTT: if( ( item && item->GetFlags() ) || ( g_RootSheet->CountSheets() == 0 ) ) break; item = LocateAndShowItem( aPosition, SCH_COLLECTOR::SheetsOnly ); if( item ) // The user has clicked on a sheet: this is an enter sheet command { m_CurrentSheet->push_back( (SCH_SHEET*) item ); DisplayCurrentSheet(); } else if( m_CurrentSheet->Last() != g_RootSheet ) { // The user has clicked ouside a sheet:this is an leave sheet command m_CurrentSheet->pop_back(); DisplayCurrentSheet(); } break; case ID_NOCONN_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { if( GetScreen()->GetItem( gridPosition, 0, SCH_NO_CONNECT_T ) == NULL ) { SCH_NO_CONNECT* no_connect = AddNoConnect( aDC, gridPosition ); SetRepeatItem( no_connect ); GetScreen()->SetCurItem( no_connect ); m_canvas->SetAutoPanRequest( true ); } } else { addCurrentItemToList(); } break; case ID_JUNCTION_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { if( GetScreen()->GetItem( gridPosition, 0, SCH_JUNCTION_T ) == NULL ) { SCH_JUNCTION* junction = AddJunction( aDC, gridPosition, true ); SetRepeatItem( junction ); GetScreen()->SetCurItem( junction ); m_canvas->SetAutoPanRequest( true ); } } else { addCurrentItemToList(); } break; case ID_WIRETOBUS_ENTRY_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { CreateBusWireEntry(); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; case ID_BUSTOBUS_ENTRY_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { CreateBusBusEntry(); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; case ID_SCHEMATIC_DELETE_ITEM_BUTT: DeleteItemAtCrossHair( aDC ); break; case ID_WIRE_BUTT: BeginSegment( aDC, LAYER_WIRE ); m_canvas->SetAutoPanRequest( true ); break; case ID_BUS_BUTT: BeginSegment( aDC, LAYER_BUS ); m_canvas->SetAutoPanRequest( true ); break; case ID_LINE_COMMENT_BUTT: BeginSegment( aDC, LAYER_NOTES ); m_canvas->SetAutoPanRequest( true ); break; case ID_TEXT_COMMENT_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_NOTES ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; case ID_ADD_IMAGE_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( CreateNewImage( aDC ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; case ID_LABEL_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_LOCLABEL ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; case ID_GLABEL_BUTT: case ID_HIERLABEL_BUTT: if( (item == NULL) || (item->GetFlags() == 0) ) { if( GetToolId() == ID_GLABEL_BUTT ) GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_GLOBLABEL ) ); if( GetToolId() == ID_HIERLABEL_BUTT ) GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_HIERLABEL ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; case ID_SHEET_SYMBOL_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { item = CreateSheet( aDC ); if( item != NULL ) { GetScreen()->SetCurItem( item ); m_canvas->SetAutoPanRequest( true ); } } else { addCurrentItemToList(); } break; case ID_IMPORT_HLABEL_BUTT: case ID_SHEET_PIN_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) item = LocateAndShowItem( aPosition, SCH_COLLECTOR::SheetsAndSheetLabels ); if( item == NULL ) break; if( (item->Type() == SCH_SHEET_T) && (item->GetFlags() == 0) ) { if( GetToolId() == ID_IMPORT_HLABEL_BUTT ) GetScreen()->SetCurItem( ImportSheetPin( (SCH_SHEET*) item, aDC ) ); else GetScreen()->SetCurItem( CreateSheetPin( (SCH_SHEET*) item, aDC ) ); } else if( (item->Type() == SCH_SHEET_PIN_T) && (item->GetFlags() != 0) ) { addCurrentItemToList(); } break; case ID_SCH_PLACE_COMPONENT: if( (item == NULL) || (item->GetFlags() == 0) ) { GetScreen()->SetCurItem( Load_Component( aDC, NULL, s_CmpNameList, s_CmpLastUnit, true ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; case ID_PLACE_POWER_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { SCHLIB_FILTER filter; filter.FilterPowerParts( true ); GetScreen()->SetCurItem( Load_Component( aDC, &filter, s_PowerNameList, s_LastPowerUnit, false ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList(); } break; #ifdef KICAD_SPICE case ID_SIM_PROBE: { const KICAD_T wiresAndComponents[] = { SCH_LINE_T, SCH_COMPONENT_T, SCH_SHEET_PIN_T }; item = LocateAndShowItem( aPosition, wiresAndComponents ); if( !item ) break; NETLIST_OBJECT_LIST* netlist = BuildNetListBase(); for( NETLIST_OBJECT* obj : *netlist ) { if( obj->m_Comp == item ) { SIM_PLOT_FRAME* simFrame = (SIM_PLOT_FRAME*) Kiway().Player( FRAME_SIMULATOR, false ); if( simFrame ) simFrame->AddVoltagePlot( obj->GetNetName() ); break; } } } break; case ID_SIM_TUNE: { const KICAD_T fieldsAndComponents[] = { SCH_COMPONENT_T, SCH_FIELD_T }; item = LocateAndShowItem( aPosition, fieldsAndComponents ); if( !item ) return; if( item->Type() != SCH_COMPONENT_T ) { item = static_cast<SCH_ITEM*>( item->GetParent() ); if( item->Type() != SCH_COMPONENT_T ) return; } SIM_PLOT_FRAME* simFrame = (SIM_PLOT_FRAME*) Kiway().Player( FRAME_SIMULATOR, false ); if( simFrame ) simFrame->AddTuner( static_cast<SCH_COMPONENT*>( item ) ); } break; #endif /* KICAD_SPICE */ default: SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); wxFAIL_MSG( wxT( "SCH_EDIT_FRAME::OnLeftClick invalid tool ID <" ) + wxString::Format( wxT( "%d> selected." ), GetToolId() ) ); } }
void SCH_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) { SCH_ITEM* item = GetScreen()->GetCurItem(); wxPoint gridPosition = GetGridPosition( aPosition ); if( ( GetToolId() == ID_NO_TOOL_SELECTED ) || ( item && item->GetFlags() ) ) { m_canvas->SetAutoPanRequest( false ); SetRepeatItem( NULL ); if( item && item->GetFlags() ) { switch( item->Type() ) { case SCH_LABEL_T: case SCH_GLOBAL_LABEL_T: case SCH_HIERARCHICAL_LABEL_T: case SCH_TEXT_T: case SCH_SHEET_PIN_T: case SCH_SHEET_T: case SCH_BUS_WIRE_ENTRY_T: case SCH_BUS_BUS_ENTRY_T: case SCH_JUNCTION_T: case SCH_COMPONENT_T: case SCH_FIELD_T: case SCH_BITMAP_T: case SCH_NO_CONNECT_T: addCurrentItemToList( aDC ); return; case SCH_LINE_T: // May already be drawing segment. break; default: wxFAIL_MSG( wxT( "SCH_EDIT_FRAME::OnLeftClick error. Item type <" ) + item->GetClass() + wxT( "> is already being edited." ) ); item->ClearFlags(); break; } } else { item = LocateAndShowItem( aPosition ); } } switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: break; case ID_HIERARCHY_PUSH_POP_BUTT: if( ( item && item->GetFlags() ) || ( g_RootSheet->CountSheets() == 0 ) ) break; item = LocateAndShowItem( aPosition, SCH_COLLECTOR::SheetsOnly ); if( item ) // The user has clicked on a sheet: this is an enter sheet command { m_CurrentSheet->Push( (SCH_SHEET*) item ); DisplayCurrentSheet(); } else if( m_CurrentSheet->Last() != g_RootSheet ) { // The user has clicked ouside a sheet:this is an leave sheet command m_CurrentSheet->Pop(); DisplayCurrentSheet(); } break; case ID_NOCONN_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { if( false == GetScreen()->GetItem( gridPosition, 0, SCH_NO_CONNECT_T ) ) { SCH_NO_CONNECT* no_connect = AddNoConnect( aDC, gridPosition ); SetRepeatItem( no_connect ); GetScreen()->SetCurItem( no_connect ); m_canvas->SetAutoPanRequest( true ); } } else { addCurrentItemToList( aDC ); } break; case ID_JUNCTION_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { if( false == GetScreen()->GetItem( gridPosition, 0, SCH_JUNCTION_T ) ) { SCH_JUNCTION* junction = AddJunction( aDC, gridPosition, true ); SetRepeatItem( junction ); GetScreen()->SetCurItem( junction ); m_canvas->SetAutoPanRequest( true ); } } else { addCurrentItemToList( aDC ); } break; case ID_WIRETOBUS_ENTRY_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { CreateBusWireEntry( aDC ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; case ID_BUSTOBUS_ENTRY_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { CreateBusBusEntry( aDC ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; case ID_SCHEMATIC_DELETE_ITEM_BUTT: DeleteItemAtCrossHair( aDC ); break; case ID_WIRE_BUTT: BeginSegment( aDC, LAYER_WIRE ); m_canvas->SetAutoPanRequest( true ); break; case ID_BUS_BUTT: BeginSegment( aDC, LAYER_BUS ); m_canvas->SetAutoPanRequest( true ); break; case ID_LINE_COMMENT_BUTT: BeginSegment( aDC, LAYER_NOTES ); m_canvas->SetAutoPanRequest( true ); break; case ID_TEXT_COMMENT_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_NOTES ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; case ID_ADD_IMAGE_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( CreateNewImage( aDC ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; case ID_LABEL_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_LOCLABEL ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; case ID_GLABEL_BUTT: case ID_HIERLABEL_BUTT: if( (item == NULL) || (item->GetFlags() == 0) ) { if( GetToolId() == ID_GLABEL_BUTT ) GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_GLOBLABEL ) ); if( GetToolId() == ID_HIERLABEL_BUTT ) GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_HIERLABEL ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; case ID_SHEET_SYMBOL_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { item = CreateSheet( aDC ); if( item != NULL ) { GetScreen()->SetCurItem( item ); m_canvas->SetAutoPanRequest( true ); } } else { addCurrentItemToList( aDC ); } break; case ID_IMPORT_HLABEL_BUTT: case ID_SHEET_PIN_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) item = LocateAndShowItem( aPosition, SCH_COLLECTOR::SheetsAndSheetLabels ); if( item == NULL ) break; if( (item->Type() == SCH_SHEET_T) && (item->GetFlags() == 0) ) { if( GetToolId() == ID_IMPORT_HLABEL_BUTT ) GetScreen()->SetCurItem( ImportSheetPin( (SCH_SHEET*) item, aDC ) ); else GetScreen()->SetCurItem( CreateSheetPin( (SCH_SHEET*) item, aDC ) ); } else if( (item->Type() == SCH_SHEET_PIN_T) && (item->GetFlags() != 0) ) { addCurrentItemToList( aDC ); } break; case ID_SCH_PLACE_COMPONENT: if( (item == NULL) || (item->GetFlags() == 0) ) { GetScreen()->SetCurItem( Load_Component( aDC, wxEmptyString, s_CmpNameList, s_CmpLastUnit, true ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; case ID_PLACE_POWER_BUTT: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { GetScreen()->SetCurItem( Load_Component( aDC, wxT( "power" ), s_PowerNameList, s_LastPowerUnit, false ) ); m_canvas->SetAutoPanRequest( true ); } else { addCurrentItemToList( aDC ); } break; default: SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); wxFAIL_MSG( wxT( "SCH_EDIT_FRAME::OnLeftClick invalid tool ID <" ) + wxString::Format( wxT( "%d> selected." ), GetToolId() ) ); } }
int main() { int i,j; float hui; FILE *LUT = NULL; struct Image *Layers = NULL; struct Image *ptrToImage = NULL; /*OPEN*/ Image Img_src = ReadImage("otDimo\\jylto.jpg"); //Image Img_src2 = ReadImage("minimacbeth\\choveche.jpg"); /*CREATE*/ Image Img_srDst = CreateNewImage_BasedOnPrototype(&Img_src, &Img_srDst); Image Img_srDst2 = CreateNewImage_BasedOnPrototype(&Img_src, &Img_srDst2); Image Img_srDst3 = CreateNewImage_BasedOnPrototype(&Img_src, &Img_srDst3); Image Img_dst = CreateNewImage(&Img_dst, Img_src.Width, Img_src.Height, 1, 1); Image Img_dst2 = CreateNewImage(&Img_dst2, Img_src.Width, Img_src.Height, 1, 1); struct point_xy CentralPoint; struct Histogram hist; struct ColorPoint_RGB ColorPoint; struct WhitePoint WhitePoint_lab1; struct WhitePoint WhitePoint_lab2; CentralPoint.X = 150;// Img_dst.Width / 2 - 200; CentralPoint.Y = 300;// Img_dst.Height / 2 + 200; ColorPoint.R = 230; ColorPoint.G = 150; ColorPoint.B = 140; fopen_s(&LUT, "Kelvins-x-z.txt","rt"); if(LUT == NULL) return 0; for(i = 0; i < 391; i++) { fscanf(LUT,"%d %f %f\n", &Kelvin_LUT[i], &X_LUT[i], &Y_LUT[i]); } /*LAYERS*/ //Layers = CreateImageLayersBasedOnPrototype(&Img_src, 100); // The color temperature of the imput image SetWhiteBalanceValues(&WhitePoint_lab1, 2); // The color temperature of the output image SetWhiteBalanceValues(&WhitePoint_lab2, 7); /*SET destination*/ //SetDestination(&Img_src, &Img_srDst); /*BLUR*/ //BlurImageAroundPoint(&Img_src, &Layers[0], CentralPoint, 17, 3, BLUR_AROUND_CENTER, 100 ); /*BLUR - gaussian*/ //BlurImageGussian(&Img_srDst, &Img_srDst2, 15, 0.7); /*ROTATE*/ //RotateImage(&Img_src, &Img_dst, 180, CentralPoint); /*BRIGHTNESS*/ //BrightnessCorrection(&Img_src, &Img_srDst, 5, BRIGHTNESS_PERCENTAGE_ALGO); /*NOISE*/ //NoiseCorrection(&Img_src, &Img_srDst, 60, 1); /*GAMMA*/ //GammaCorrection(&Img_src, &Img_srDst3, 1.2, 0.6, 1.2); /*CONRAST*/ //ContrastCorrection(&Img_src, &Img_srDst2, 10); /* COLOR TEMPERATURE */ //ColorTemperature() /*WHITE BALANCE*/ WhiteBalanceCorrectionRGB(&Img_src, &Img_srDst2, 4); /* WHITE BALANCE - convert to XYZ. Set WhitePoints first */ //WhiteBalanceGREENY(&Img_src, &Img_srDst2, WhitePoint_lab1); /*WHITE BALANCE - using T and RGB*/ //WhitebalanceCorrectionBLUEorRED(&Img_src, &Img_srDst2, WhitePoint_lab1); //j = 0; //for (i = -50; i < 50; i++) //{ // BrightnessCorrection(&Img_src, &Layers[j++], 2 * (i), BRIGHTNESS_PERCENTAGE_ALGO); //} /*MASK create*/ //Img_dst = CreateMaskForLayers(&Layers[0], 2, 100); /*MERGE Layers*/ //CombineLayers(Layers, &Img_srDst, Img_dst); /*GrayScale - result in 3 channels*/ //ConvertToGrayscale_3Channels(&Img_src, &Img_dst); //ConvertToGrayscale_1Channel(&Img_src, &Img_dst); /*ZOOM - in_or_out +-Percentage (SCALE)*/ //ScaleImage(&Img_src, &Img_srDst, 100); /*TRANSLATION*/ //TranslateImage(&Img_src, &Img_dst, CentralPoint); /*EDGE - Contour*/ //EdgeExtraction(&Img_dst, &Img_dst2, EDGES_PREWITT , 1, 0.9); /*MIRROR*/ //MirrorImageHorizontal(&Img_src, &Img_srDst); //MirrorImageVertical(&Img_src, &Img_srDst); /*CROP*/ //CropImage(&Img_src, &Img_srDst, CentralPoint,500,500 ); /*MORPH*/ //MorphDilate(&Img_dst, &Img_dst2, 3 , 7); //MorphErode(&Img_dst, &Img_dst2, 3, 1); /*SHARP*/ //SharpImageContours(&Img_src, &Img_srDst2, 60); /*COLOR from gray*/ //ColorFromGray(&Img_dst, &Img_srDst2, ColorPoint); /*BINARY image*/ //ConvertToBinary(&Img_src, &Img_dst, 0); /*RGB to HSL convert*/ //ConvertImage_RGB_to_HSL(&Img_src, &Img_srDst); /*HSL to RGB convert*/ //ConvertImage_HSL_to_RGB(&Img_srDst, &Img_srDst2); /*SATURATION*/ //Saturation(&Img_src, &Img_srDst2, 0); /*BLEND image with another image */ //BlendImage(&Img_src, &Img_src2, &Img_srDst, 50, BLEND_DONT_EXTRACT_EDGES, BLEND_REMOVE_WHITE, 20); /* RGB, XYZ, LAB convert */ //ConvertImage_RGB_to_LAB(&Img_src, &Img_srDst2, WhitePoint_lab1); //ConvertImage_LAB_to_RGB(&Img_srDst2, &Img_srDst, WhitePoint_lab2); //hui = pow_func(2, 2.5, 2); /*INVERT colors*/ //InverseImage0to255(&Img_src, &Img_srDst); /*FOURIER transform*/ //SpatialToFrequencyDomain(&Img_src, &Img_dst); /*Histogram */ /* Create new Histpgram for a given Image */ HistogramForImage(&hist, &Img_srDst2, 3); ConvertHistToImage(&hist, &Img_dst); /*WRITE*/ //WriteImage("fourierExample_Result__1.jpg", Img_src, QUALITY_MAX); WriteImage("otDimo\\_Result.jpg", Img_dst, QUALITY_MAX); //WriteImage("otDimo\\_Result_AWB_Algo2.jpg", Img_srDst2, QUALITY_MAX); //WriteImage("minimacbeth\\Result_BlueOrRed.jpg", Layers[2], QUALITY_MAX); /* DESTROY images*/ if(Layers != NULL)DestroyImage(Layers); DestroyImage(&Img_src); DestroyImage(&Img_dst); DestroyImage(&Img_dst2); DestroyImage(&Img_srDst); DestroyImage(&Img_srDst2); DestroyImage(&Img_srDst3); fclose(LUT); return 0; }