//Métodos para cerrar las imágenes de los forms public void ImagenCerrada() { estadoImagen = EstadoImagen.nula; guardarToolStripMenuItem.Enabled = false; guardarImagenToolStripButton.Enabled = false; preprocesadoToolStripMenuItem.Enabled = false; escalarToolStripButton.Enabled = false; escaladoToolStripMenuItem.Enabled = false; umbralizarToolStripButton.Enabled = false; umbralizarToolStripMenuItem.Enabled = false; enderezarToolStripButton.Enabled = false; enderezarToolStripMenuItem.Enabled = false; if (!correcionSlopeToolStripButton.Enabled && !correcionSlantToolStripButton.Enabled && !palabrasToolStripButton.Enabled && !caracteresToolStripButton.Enabled && !esqueletoToolStripButton.Enabled) { segmentaciónToolStripMenuItem.Enabled = false; manualSegmentacionToolStripMenuItem.Enabled = false; } lineasToolStripButton.Enabled = false; lineasToolStripMenuItem.Enabled = false; semiautomaticoToolStripMenuItem.Enabled = false; automaticoSegmentacionToolStripMenuItem.Enabled = false; }
//Métodos Segmentado Semiautomático private void semiautomaticoToolStripMenuItem_Click(object sender, EventArgs e) { if (textoSegmentado != null) { textoSegmentado.LiberarTextoManejado(); } textoSegmentado = textoActual.Copia(); deshabilitarMenus("Segmentado semiautomático"); conometro.Start(); //Segmentación líneas textoSegmentado.SegmentacionLineas(perfilActual.segmentacion.interlineadoMedio, perfilActual.segmentacion.incrementoMinimoLineas); estadoImagenSegmentada = EstadoImagen.lineasSegmentadas; ArreglarLineasForm arreglar = new ArreglarLineasForm(this); arreglar.ShowDialog(); if (estadoImagenSegmentada != EstadoImagen.nula) { imagenSegmentada.habilitarBotonCerrar(false); } segmentadoSemiautomaticoBackgroundWorker.RunWorkerAsync(); }
//Métodos auxiliares para escanear bool IMessageFilter.PreFilterMessage(ref Message m) { TwainCommand orden = escaner.RecibirMensaje(ref m); if (orden == TwainCommand.Not) { return(false); } switch (orden) { case TwainCommand.CloseRequest: { Terminar(); escaner.CerrarConexion(); break; } case TwainCommand.CloseOk: { Terminar(); escaner.CerrarConexion(); break; } case TwainCommand.DeviceEvent: { break; } case TwainCommand.TransferReady: { ArrayList imagenes = escaner.TransferirImagenes(); Terminar(); escaner.CerrarConexion(); for (int i = 0; i < imagenes.Count; i++) { //byte []nuevaImagen; IntPtr imagen = (IntPtr)imagenes[i]; //Arreglar textoActual = new TextoManejado(GlobalLock(imagen)); textoActual = textoActual.Copia(); GlobalFree(imagen); estadoImagen = EstadoImagen.nula; CargarImagen(); } break; } } return(true); }
private void abrirFileDialog_FileOk(object sender, CancelEventArgs e) { if (abrirFileDialog.FileNames.Length > 0)//Se ha seleccionado un archivo { textoActual.LiberarTextoManejado(); textoActual.Cargar(abrirFileDialog.FileName); estadoImagen = EstadoImagen.nula; CargarImagen(); } }
private void segmentadoAutomaticoBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { conometro.Start(); //Segmentación líneas textoSegmentado.SegmentacionLineas(perfilActual.segmentacion.interlineadoMedio, perfilActual.segmentacion.incrementoMinimoLineas); estadoImagenSegmentada = EstadoImagen.lineasSegmentadas; //Correción Slope if (perfilActual.segmentacion.corregirSlope) { textoSegmentado.CorregirSlope(perfilActual.segmentacion.distanciaMinimaSlope); } //Correción Slant if (perfilActual.segmentacion.corregirSlant) { textoSegmentado.CorregirSlant(perfilActual.segmentacion.distanciaMinimaSlant); } //Segmentado Palabras textoSegmentado.SegmentacionPalabras(perfilActual.segmentacion.espaciadoMedio, false); estadoImagenSegmentada = EstadoImagen.palabrasSegmentadas; //Segmentado Caracteres y Esqueleto if (perfilActual.segmentacion.precaracteres) { if (perfilActual.segmentacion.calcularEsqueleto) { textoSegmentado.Esqueleto(); } textoSegmentado.SegmentacionCaracteres(perfilActual.segmentacion.grosorMedioTrazo, perfilActual.segmentacion.incrementoMinimoCaracteres, false); } else { textoSegmentado.SegmentacionCaracteres(perfilActual.segmentacion.grosorMedioTrazo, perfilActual.segmentacion.incrementoMinimoCaracteres, false); if (perfilActual.segmentacion.calcularEsqueleto) { textoSegmentado.Esqueleto(); } } estadoImagenSegmentada = EstadoImagen.caracteresSegmentados; conometro.Stop(); }
private void preprocesadoBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { conometro.Start(); if (perfilActual.preprocesado.redimensionarImagen) { double factorAlto = 1.0; double factorAncho = 1.0; if (perfilActual.preprocesado.mantenerProporcion) { if (perfilActual.preprocesado.cambiarAlto) { factorAlto = ((double)perfilActual.preprocesado.pixelesAlto) / textoActual.GetAlto(); factorAncho = textoActual.GetAncho() * factorAlto / textoActual.GetAlto(); } else if (perfilActual.preprocesado.cambiarAncho) { factorAncho = ((double)perfilActual.preprocesado.pixelesAncho) / textoActual.GetAncho(); factorAlto = textoActual.GetAlto() * factorAncho / textoActual.GetAncho(); } } else { if (perfilActual.preprocesado.cambiarAlto) { factorAlto = ((double)perfilActual.preprocesado.pixelesAlto) / textoActual.GetAlto(); } if (perfilActual.preprocesado.cambiarAncho) { factorAncho = ((double)perfilActual.preprocesado.pixelesAncho) / textoActual.GetAncho(); } } textoActual.Escalacion(factorAncho, factorAlto); } textoActual.Umbralizar(perfilActual.preprocesado.umbral); estadoImagen = EstadoImagen.umbralizada; if (perfilActual.preprocesado.enderezadoAutomatico) { textoActual.Enderezar(); } conometro.Stop(); }
//Métodos //Constructor public PrincipalForm() { InitializeComponent(); //Inicializaciones textoActual = new TextoManejado(); estadoImagen = EstadoImagen.nula; textoSegmentado = new TextoManejado(); escaner = new ConexionEscaner(this.Handle); if (!escaner.Inicializar()) { twainToolStripMenuItem.Enabled = false; twainToolStripButton.Enabled = false; } imagenPreprocesada = new ImagenActualForm(Etapa.preprocesado); imagenSegmentada = new ImagenActualForm(Etapa.segmentacion); conometro = new Stopwatch(); perfilesLabel.Text = "Perfil actual:"; TransparencyKey = Color.Red; tareaToolStripStatusLabel.Alignment = ToolStripItemAlignment.Right; barraEstadoProgressBar.Alignment = ToolStripItemAlignment.Right; CargarConfiguracion(); ActualizarPerfiles(); perfilesComboBox.SelectedItem = configuracionGeneral.perfilInicial; CargarPerfil(); if (perfilActual.general.iniciarMaximizado) { WindowState = FormWindowState.Maximized; } }
public void CerrarImagenSegmentada() { estadoImagenSegmentada = EstadoImagen.nula; if (!lineasToolStripButton.Enabled) { segmentaciónToolStripMenuItem.Enabled = false; } correcionSlopeToolStripButton.Enabled = false; correcionSlopeToolStripMenuItem.Enabled = false; correcionSlantToolStripButton.Enabled = false; correcionSlantToolStripMenuItem.Enabled = false; palabrasToolStripButton.Enabled = false; palabrasToolStripMenuItem.Enabled = false; caracteresToolStripButton.Enabled = false; caracteresToolStripMenuItem.Enabled = false; esqueletoToolStripButton.Enabled = false; esqueletoToolStripMenuItem.Enabled = false; reconocimientoToolStripMenuItem.Enabled = false; reconocimientoToolStripButton.Enabled = false; ManualToolStripMenuItem.Enabled = false; }
//Métodos para cargar imágenes en el form public void CargarImagen() { IntPtr ptrDIB; //Puntero al DIB IntPtr ptrMapaBits; //Puntero al mapa de bits en sí (nos saltamos el bitmapinfoheader y la paleta, si la hay) unsafe //Zona no segura (transformación de punteros C++ a C#) { ptrDIB = (IntPtr)textoActual.GetDIB(); ptrMapaBits = (IntPtr)textoActual.GetMapaBits(); } //Cargamos la imagen en un Form hijo if (imagenPreprocesada.IsDisposed) { imagenPreprocesada = new ImagenActualForm(Etapa.preprocesado); } imagenPreprocesada.CargarImagen(BitmapFromDIB(ptrDIB, ptrMapaBits)); imagenPreprocesada.MdiParent = this;//Indicamos que PrincipalForm es el padre del formulario imagenPreprocesada.Show(); //Habilitado y deshabilitado de menús if (estadoImagen == EstadoImagen.nula) { estadoImagen = EstadoImagen.cargada; guardarToolStripMenuItem.Enabled = true; guardarImagenToolStripButton.Enabled = true; preprocesadoToolStripMenuItem.Enabled = false; manualPreprocesadoToolStripMenuItem.Enabled = false; escalarToolStripButton.Enabled = false; escaladoToolStripMenuItem.Enabled = false; umbralizarToolStripButton.Enabled = false; umbralizarToolStripMenuItem.Enabled = false; enderezarToolStripButton.Enabled = false; enderezarToolStripMenuItem.Enabled = false; automaticoPreprocesadoToolStripMenuItem.Enabled = false; lineasToolStripButton.Enabled = false; lineasToolStripMenuItem.Enabled = false; semiautomaticoToolStripMenuItem.Enabled = false; automaticoSegmentacionToolStripMenuItem.Enabled = false; if (textoActual.GetProfundidad() == 8 || textoActual.GetProfundidad() == 24) { preprocesadoToolStripMenuItem.Enabled = true; manualPreprocesadoToolStripMenuItem.Enabled = true; escalarToolStripButton.Enabled = true; escaladoToolStripMenuItem.Enabled = true; umbralizarToolStripButton.Enabled = true; umbralizarToolStripMenuItem.Enabled = true; enderezarToolStripButton.Enabled = true; enderezarToolStripMenuItem.Enabled = true; automaticoPreprocesadoToolStripMenuItem.Enabled = true; if (textoActual.EstaUmbralizado()) { estadoImagen = EstadoImagen.umbralizada; umbralizarToolStripButton.Enabled = false; umbralizarToolStripMenuItem.Enabled = false; segmentaciónToolStripMenuItem.Enabled = true; manualSegmentacionToolStripMenuItem.Enabled = true; lineasToolStripButton.Enabled = true; lineasToolStripMenuItem.Enabled = true; semiautomaticoToolStripMenuItem.Enabled = true; automaticoSegmentacionToolStripMenuItem.Enabled = true; } } } else { if (estadoImagen == EstadoImagen.umbralizada) { umbralizarToolStripButton.Enabled = false; umbralizarToolStripMenuItem.Enabled = false; segmentaciónToolStripMenuItem.Enabled = true; manualSegmentacionToolStripMenuItem.Enabled = true; lineasToolStripButton.Enabled = true; lineasToolStripMenuItem.Enabled = true; semiautomaticoToolStripMenuItem.Enabled = true; automaticoSegmentacionToolStripMenuItem.Enabled = true; } } }