fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Visión Artificial C...
 
Avisos
Vaciar todo

Visión Artificial C#

8 Respuestas
2 Usuarios
0 Reactions
2,356 Visitas
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

Buenas a todos,

Estoy haciendo el tutorial de visión artificial de Mif. El problema está en que al declarar el bitmap en C#, me salta un error que dice lo siguiente:

No se controló NullReferenceException
Referencia a objeto no establecida como instancia de un objeto.

Código:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WebCamCSharp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
TScreen.Enabled = true;
webCam1.Start();
}

private void button2_Click(object sender, EventArgs e)
{
TScreen.Enabled = false;
webCam1.Stop();
}

private void TScreen_Tick(object sender, EventArgs e)
{
PicActual.Image = webCam1.Imagen;

Bitmap ImgOriginal = new Bitmap(PicActual.Image);
Bitmap ImgResultante = new Bitmap(PicActual.Image);

int rojo, verde, azul;
int ultimoazulX, ultimoazulY;
int tolerancia = 5;
int x, y;

for (x = 0; x == ImgOriginal.Height - 1; x+=10)
{
for (y = 0; y == ImgOriginal.Width - 1; y+=10)
{
rojo = ImgOriginal.GetPixel(x,y).R;
verde = ImgOriginal.GetPixel(x, y).G;
azul = ImgOriginal.GetPixel(x, y).B;

if (azul >= rojo - tolerancia)
{
if (azul >= verde - tolerancia)
{
ImgResultante.SetPixel(x, y, Color.Yellow);
ImgResultante.SetPixel(x + 1, y, Color.Yellow);
ImgResultante.SetPixel(x, y + 1, Color.Yellow);
ImgResultante.SetPixel(x + 1, y + 1, Color.Yellow);

ultimoazulX = x;
ultimoazulY = y;
}
}
else
{
ImgResultante.SetPixel(x, y, Color.Black);
}
}
}
}

private void button3_Click(object sender, EventArgs e)
{
webCam1.Configuracion();
}
}
}

He buscado en internet y por lo que he visto la declaración del bitmap la hago bien.

Bitmap ImgOriginal = new Bitmap(PicActual.Image);
Bitmap ImgResultante = new Bitmap(PicActual.Image);

Seguro que es una tonteria. xD

Saludos y gracias.

Responder
7 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Otia, yo tengo el programa de Mif pasado a C# pero lo tengo en un disco al que no puedo acceder (externo y se ha jodido la caja)...

Mirate PicActual o webCam1 a ver si están inicializadas.

S2

Ranganok Schahzaman

Responder
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

La WebCam1 la inicializo aquí.

webCam1.Start();

La PicActual es un PictureBox, no lo inicializo, se tiene que inicializar?¿

El problema me salta cuando le doy al boton Start.
Por lo que he visto de momento, el formato al declarar un bitmap en C# es así:

Bitmap nombre = new Bitmap ("Path a imagen");

No tendria que haber ningún problema en poner la imagen directamente peró por los visto si lo hay xD.

Yo lo pongo así:

Bitmap ImgOriginal = new Bitmap(PicActual.Image);

Saludos.

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Si el problema lo encuentras en el start tienes que mirar lo siguiente:

TScreen.Enabled = true;
webCam1.Start();

Mira que TScreen este inicializado.
Mira que webCam1 este inicializado.
Mira que lo que hay dentro de Start() este correcto.

S2

Ranganok Schahzaman

Responder
ionthas
Respuestas: 153
Topic starter
(@ionthas)
Estimable Member
Registrado: hace 17 años

Lo he mirado bien con el debugger y cuando pulso Start me lo hace bien todo salta al TScreen. El problema tiene que ser de los bitmaps.

Responder
Página 1 / 2
Compartir: