elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Java / Ayuda con JFrame y Tratamiento de imagen JAVA en: 6 Enero 2016, 17:56 pm
Buenas! estoy trabajando con OpenCV, una librería de T.D.I., pero me tope con un problema creo yo muy fácil de resolver, solo que no se que pasa :v tengo una función en mi clase que se llama run(), esta toma la imagen de la cámara, hace el tratamiento y repinta el JFrame, y esta se manda llamar con un JButton, o sea que básicamente al pulsar el botón hace una captura de imagen, le hace el tratamiento y la pone en el frame.
Todo iba bien hasta que quise hacer eso video, simplemente haciendo que el run se ejecutara n veces con un for, el problema es que al ejecutarlo, se toma la captura de imagen n veces, se hace el tratamiento n veces, pero se repinta el Frame solo una vez  :(  entonces lo que hace es lo mismo, solo imprime una imagen, pero mas lento xD entonces, no se que rayos le pasa :v algún consejo?

Código:
    public void run() {    
        capture.read(imgcamara); 
        if(!imgcamara.empty()){   
            System.out.println("SI entre al run");


            //////////////tratamiento con OpenCV
            Imgproc.cvtColor(imgcamara, imagenhsv, Imgproc.COLOR_BGR2HSV); 
            Core.inRange(imagenhsv, hsv_min, hsv_max, thresholded);           
            Core.inRange(imagenhsv, hsv_min2, hsv_max2, thresholded2); 
            Core.inRange(distance,hsv_min3, hsv_max3, thresholded2); 
            Core.split(imagenhsv, lhsv);
            S = lhsv.get(1); 
            V = lhsv.get(2); 
            Core.subtract(array255, S, S); 
            Core.subtract(array255, V, V); 
            S.convertTo(S, CvType.CV_32F); 
            V.convertTo(V, CvType.CV_32F); 
            Core.magnitude(S, V, distance);   
            Core.bitwise_and(thresholded, thresholded2, thresholded); 
            Imgproc.GaussianBlur(thresholded, thresholded, new Size(9,9),0,0); //despiexelea
            Imgproc.HoughCircles(thresholded, circles, Imgproc.CV_HOUGH_GRADIENT, 2, thresholded.height()/4, 500, 50, 0, 0);   
            rows = circles.rows(); 
            elemSize = (int)circles.elemSize(); 
            data2 = new float[rows * elemSize/4]; 
            if (data2.length>0){ 
                circles.get(0, 0, data2); 
                for(int i=0; i<data2.length; i=i+3) { 
                    Point center= new Point(data2[i], data2[i+1]); 
                    Core.ellipse( imgcamara, center, new Size((double)data2[i+2], (double)data2[i+2]), 0, 0, 360, new Scalar( 0, 0, 0 ), 3, 0, 0 );
                } 
            }   
            ///////////////fin del tratamiento

            try {
                Thread.sleep(1000);
            } catch (InterruptedException ex) {}
            panel1.setimagewithMat(imgcamara);
            CapturaDeCamara.repaint();   
            System.out.println("SI repinte");
        }
        System.out.println("SI sali del run");
    }   
    public void actionPerformed(ActionEvent event){
        if(event.getSource() == iniciar){
            for(int k = 0; k<10; k++){
                run();
            }
        }
    }
2  Programación / Programación C/C++ / Ayuda fflush en: 22 Marzo 2015, 22:40 pm
Hola, tengo una duda con el buffer, estaba haciendo una pila, entonces se me ocurrio poner 2 push, luego 2 pops, luego 2 push y por ultimo 2 pops, pero el ejecutable recibio los 4 push y luego imprimió los 4 pops, me dijeron que era por el buffer, y que tenía que poner fflush(stdout); sin embargo sigue pasando lo mismo :(
Código:
#include <bits/stdc++.h>

using namespace std;

template <typename tipo>
struct pila{
    int numero;
    int tope=0;
    vector<tipo>dato;
    void setSize(int n){
        dato.resize(n);
    }
    void push(){
        if(tope<dato.size()){
            cin >> numero;
            dato[tope]=numero;
            tope++;
        }else{
            throw overflow_error ("Pila llena");
        }
    }
    void pop(){
        if(tope>0){
            tope--;
            cout << dato[tope];
        }else{
            throw underflow_error ("Pila vacia");
        }
    }
};
pila<int>Fila;
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    Fila.setSize(2);
    Fila.push();
    Fila.push();
    Fila.pop();
    Fila.pop();
    fflush(stdout);
    Fila.push();
    Fila.push();
    Fila.pop();
    Fila.pop();
    return 0;
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines