Advertisement
FHRL

Localización de círculos V0.4.3 (calcula centro x)

Apr 6th, 2022 (edited)
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.04 KB | None | 0 0
  1. /* una disculpa por los retrasos hubo modificaciones adicionales no incluidas en in principio.
  2.  * Created by SharpDevelop.
  3.  * User: fhrl0
  4.  * Date: 14/09/2019-21/02/2022
  5.  * Time: 08:00 p. m.
  6.  * Version: 0.4.3
  7.  * To change this template use Tools | Options | Coding | Edit Standard Headers.
  8.  */
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Drawing;
  12. using System.Windows.Forms;
  13.  
  14. namespace Actividad_1
  15. {
  16.     /// <summary>
  17.     /// Description of MainForm.
  18.     /// </summary>
  19.     public partial class MainForm : Form
  20.     {
  21.         Bitmap Original,Drawing;
  22.         OpenFileDialog openFileDialogImagen=new OpenFileDialog();
  23.         public MainForm()
  24.         {
  25.             //
  26.             // The InitializeComponent() call is required for Windows Forms designer support.
  27.             //
  28.             InitializeComponent();
  29.            
  30.             //
  31.             // TODO: Add constructor code after the InitializeComponent() call.
  32.             //
  33.         }
  34.         int codificador(bool[]arregloBits){
  35.             int abstracto=0;
  36.             for(int i=0;i<arregloBits.Length;i++){
  37.                 abstracto=abstracto*2;
  38.                 if(arregloBits[i])
  39.                     abstracto++;
  40.             }
  41.             return abstracto;
  42.         }
  43.         bool esNegro(int x,int y){
  44.             return(int)Original.GetPixel(x,y).R
  45.                  +(int)Original.GetPixel(x,y).G
  46.                  +(int)Original.GetPixel(x,y).B<(int)383;
  47.         }
  48.         bool esMasOscuro(Color esteAComparar,Color QueElOtroAComparar){
  49.             return((int)esteAComparar.R
  50.                  +(int)esteAComparar.G
  51.                  +(int)esteAComparar.B)
  52.                               <=
  53.                  ((int)QueElOtroAComparar.R
  54.                  +(int)QueElOtroAComparar.G
  55.                  +(int)QueElOtroAComparar.B);
  56.         }
  57.         void ButtonMostrarClick(object sender, EventArgs e){
  58.             if(pictureBoxMuestra.Image==null){
  59.             }else{
  60.                 //Original=(Bitmap)pictureBoxMuestra.Image;
  61.                 Drawing=(Bitmap)(Original=(Bitmap)pictureBoxMuestra.Image);
  62.                 Point inicio=new Point(0,0),
  63.                         fin=new Point(Original.Width-1,Original.Height-1);
  64.                 analizarBitmap(inicio,fin);
  65.                 //analizar(0,0,Original.Width-1,Original.Height-1);
  66.                 pictureBoxMuestra.Refresh();
  67.                 pictureBoxMuestra.Image=Drawing;
  68.             }
  69.    
  70.         }
  71.         void analizarBitmap(Point inicio,Point fin){
  72.             Point posicion=new Point();
  73.             for(posicion.Y=inicio.Y;posicion.Y<fin.Y;posicion.Y++)for(posicion.X=inicio.X;posicion.X<fin.X;posicion.X++){
  74.                 if(esMasOscuro(Drawing.GetPixel(posicion.X,posicion.Y),Color.Black/*DarkGray se midifico por nueva espesificacion*/)){
  75.                     detectarCirculo(inicio,posicion,fin);
  76.                     Drawing.SetPixel(posicion.X,posicion.Y,Color.Blue);
  77.                 }
  78.                 //Drawing.SetPixel(posicion.X,posicion.Y,Color.Tomato);
  79.             }
  80.             //pictureBoxMuestra.Refresh();
  81.         }
  82.         /*void analizar(int inicioX, int inicioY,int finX,int finY){
  83.             Point posicion=new Point();
  84.             for(posicion.Y=inicioY;posicion.Y<finY;posicion.Y++)
  85.                 for(posicion.X=inicioX;posicion.X<finX;posicion.X++){
  86.                     if(esMasOscuro(Drawing.GetPixel(posicion.X,posicion.Y),Color.Gray))
  87.                         detecta(inicioX,inicioY,finX,finY);
  88.                     //Drawing.SetPixel(posicion.X,posicion.Y,Color.OrangeRed);
  89.             }
  90.             pictureBoxMuestra.Refresh();
  91.         }*/
  92.        
  93.         void detectarCirculo(Point inicio,Point posicion,Point fin){//se midificara por nueva espesificasion
  94.            
  95.             for(int k=posicion.Y;k<fin.Y;k++){
  96.                 if(!esMasOscuro(Drawing.GetPixel(posicion.X,k),Color.Black)){
  97.                     k=(k+posicion.Y)/2;
  98.                     int x1,x2;
  99.                     for(x1=posicion.X;inicio.X<x1 && !esMasOscuro(Drawing.GetPixel(posicion.X,k),Color.DarkGray);x1--);
  100.                     for(x2=posicion.X+(posicion.X-x1);x2<fin.X && !esMasOscuro(Drawing.GetPixel(posicion.X,k),Color.DarkGray);x2++);
  101.                 }else{
  102.                     Drawing.SetPixel(posicion.X,k,Color.Blue);
  103.                     pictureBoxMuestra.Refresh();
  104.                 }
  105.                
  106.             }
  107.             /*if(inicio.X<0 0<fin.X && inicio.Y<0 0<fin.Y){
  108.                
  109.             }*/
  110.            
  111.         }
  112.         void ButtonAbrirMouseClick(object sender, MouseEventArgs e){
  113.             openFileDialogImagen.ShowDialog();
  114.             pictureBoxMuestra.Image=Image.FromFile(openFileDialogImagen.FileName);
  115.    
  116.         }
  117.     }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement