OpenCV y reconocimiento de patrones

Iniciado por alex_uam, 12 Junio 2013, 03:37 AM

0 Miembros y 1 Visitante están viendo este tema.

alex_uam

 :oHola buenas dias, espero me puedan ayudar a despejar mis dudas sobre el uso de opencv, la verdad necesito ayuda de como realizar un proyecto, necesito un programa que clasifique objetos(circulos,cuadrados,triangulos y rectangulos), se que OpenCv me puede ayudar la duda esta en como utilizarlo, pues tengo la idea de como hacerlo.

Lo primero que pretendo es leer una foto que solo contenga una figura de las antes mencionadas, y que defina que figura es; creo eso se puede hacer por medio de una libreria de OpenCV pero no se cuál es, la idea que tengo es que identifique por medio de sus lados la figura que es , es decir, de un cuadrado debe localizarlo porque sus 4 lados seqn iguales, un triangulo que solo tenga 3 lados y un rectangulo que 2 de sus lados sean iguales y los otros 2 igual, y la circunferencia pues no tiene lados, la verdad tengo la idea pero no se como implementarlo, espero me puedan ayudar, GRACIAS!


Y esperando les guste mi proyecto ;-)

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

alex_uam

ya rervise los codigos de los links que me diste y no pude compilar, estoy usando OpenCv y netbeans 7.0 mira el codigo de un ejemplo para encontrar circulos es el siguiente:

#include <cv.h>
#include <highgui.h>
#include <math.h>


using namespace cv;

int main(int argc, char** argv)
{
    Mat img, gray;
    if( argc != 2 && !(img=imread(argv[1], 1)).data)
        return -1;
    cvtColor(img, gray, CV_BGR2GRAY);
    // smooth it, otherwise a lot of false circles may be detected
    GaussianBlur( gray, gray, Size(9, 9), 2, 2 );
    vector<Vec3f> circles;
    HoughCircles(gray, circles, CV_HOUGH_GRADIENT,2, gray->rows/4, 200, 100 );
    for( size_t i = 0; i < circles.size(); i++ )
    {
         Point center(cvRound(circles
  • ), cvRound(circles[1]));
             int radius = cvRound(circles[2]);
             // draw the circle center
             circle( img, center, 3, Scalar(0,255,0), -1, 8, 0 );
             // draw the circle outline
             circle( img, center, radius, Scalar(0,0,255), 3, 8, 0 );
        }
        namedWindow( "circles", 1 );
        imshow( "circles", img );
        return 0;
    }


    y me manda un error en esta linea:

      HoughCircles(gray, circles, CV_HOUGH_GRADIENT,2, gray->rows/4, 200, 100 );

    el cual dice: based operand of '->' has non-pointer type 'cv::Mat

    espero me puedas ayudar!!

engel lex

te descargaste las librerias?

CitarminDist – Minimum distance between the centers of the detected circles. If the parameter is too small, multiple neighbor circles may be falsely detected in addition to a true one. If it is too large, some circles may be missed.

colocale un valor manual y ve si anda... de todas formas revisa las otras funciones
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

alex_uam


JJ91

buenas algunos de ustedes trabajo con la extensión de OpcenCV que se llama CVBlob?? tengo dias tratando de instalarla en VS2015 y no he podido, cualquier información sería de mucha ayuda, gracias.