Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C/C++] Compilazione programma con opencv

    Salve sto cercando di compilare un programma in c/c++ che sfrutta le opencv, ma mi da il seguente errore:

    rrobotics@rrobotics-q1:~/Scrivania$ g++ catturaimmagine.cpp -o immcatt
    catturaimmagine.cpp:1:16: error: cv.h: Nessun file o directory
    catturaimmagine.cpp:2:21: error: highgui.h: Nessun file o directory
    catturaimmagine.cpp: In function ‘int main()’:
    catturaimmagine.cpp:8: error: ‘CvCapture’ was not declared in this scope
    catturaimmagine.cpp:8: error: ‘capture’ was not declared in this scope
    catturaimmagine.cpp:8: error: ‘CV_CAP_ANY’ was not declared in this scope
    catturaimmagine.cpp:8: error: ‘cvCaptureFromCAM’ was not declared in this scope
    catturaimmagine.cpp:16: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope
    catturaimmagine.cpp:16: error: ‘cvNamedWindow’ was not declared in this scope
    catturaimmagine.cpp:21: error: ‘IplImage’ was not declared in this scope
    catturaimmagine.cpp:21: error: ‘frame’ was not declared in this scope
    catturaimmagine.cpp:21: error: ‘cvQueryFrame’ was not declared in this scope
    catturaimmagine.cpp:28: error: ‘cvShowImage’ was not declared in this scope
    catturaimmagine.cpp:33: error: ‘cvWaitKey’ was not declared in this scope
    catturaimmagine.cpp:37: error: ‘cvReleaseCapture’ was not declared in this scope
    catturaimmagine.cpp:38: error: ‘cvDestroyWindow’ was not declared in this scope

    il codice del programma è questo:

    #include "cv.h"
    #include "highgui.h"
    #include <stdio.h>

    // A Simple Camera Capture Framework
    int main() {

    CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
    if( !capture ) {
    fprintf( stderr, "ERROR: capture is NULL \n" );
    getchar();
    return -1;
    }

    // Create a window in which the captured images will be presented
    cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE );

    // Show the image captured from the camera in the window and repeat
    while( 1 ) {
    // Get one frame
    IplImage* frame = cvQueryFrame( capture );
    if( !frame ) {
    fprintf( stderr, "ERROR: frame is null...\n" );
    getchar();
    break;
    }

    cvShowImage( "mywindow", frame );
    // Do not release the frame!

    //If ESC key pressed, Key=0x10001B under OpenCV 0.9.7(linux version),
    //remove higher bits using AND operator
    if( (cvWaitKey(10) & 255) == 27 ) break;
    }

    // Release the capture device housekeeping
    cvReleaseCapture( &capture );
    cvDestroyWindow( "mywindow" );
    return 0;
    }

    e per compilarlo ho fatto cosi in ubuntu: g++ catturaimmagine.cpp -o cattura
    Devo per caso mettere il file in una cartella specifica o mettere delle opzioni particolari nella compilazione?
    Grazie mille...

  2. #2

    Re: [C/C++] Compilazione programma con opencv

    Originariamente inviato da andrearr00
    catturaimmagine.cpp:1:16: error: cv.h: Nessun file o directory
    catturaimmagine.cpp:2:21: error: highgui.h: Nessun file o directory
    Non trova i file di inclusione della libreria in questione. Come hai installato la libreria e i suoi include?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    eh....effettivamente è stato un grosso problema...perchè ho dovuto prendere spunto da diverse guide dato che facevo fatica ad installarle.quindi non so se ho installato tutto correttamente. tu sapresti consigliarmi una guida all'installazione fatta bene per ubuntu 9 e che sai che funzioni? perchè magari il problema è che non la ho installata correttamente...

  4. #4
    adesso ho messo nel programma il percorso delle librerie e le trova ma mi dà un altro errore:

    root@rrobotics-q1:/home/rrobotics/Scrivania/Analisi# g++ catturaimmagine.cpp -o immagine
    /tmp/cc5irdIN.o: In function `main':
    catturaimmagine.cpp.text+0x75): undefined reference to `cvCreateCameraCapture'
    catturaimmagine.cpp.text+0xc9): undefined reference to `cvNamedWindow'
    catturaimmagine.cpp.text+0xd4): undefined reference to `cvQueryFrame'
    catturaimmagine.cpp.text+0x11c): undefined reference to `cvShowImage'
    catturaimmagine.cpp.text+0x128): undefined reference to `cvWaitKey'
    catturaimmagine.cpp.text+0x142): undefined reference to `cvReleaseCapture'
    catturaimmagine.cpp.text+0x14e): undefined reference to `cvDestroyWindow'
    collect2: ld returned 1 exit status

    a cosa puo essere dovuto? sembra che comunque non trovi alcune funzioni...

  5. #5
    Devi specificare al linker (o al compilatore che richiama il linker) di linkare assieme ai tuoi moduli oggetto anche la libreria .a relativa alle opencv.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    scusa se approfitto delle tue conoscenze ma sapresti per caso come fare?

  7. #7
    Dovresti specificare sulla linea di comando di g++ (o di gcc) l'opzione -l seguita dal nome della libreria, che tuttavia ignoro. Dai un'occhiata alla documentazione di OpenCV, ci sarà scritto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Grazie mille della dritta: posto qui la soluzione che funziona perfettamente
    $ g++ -I/opt/opencv/include/opencv \
    -L/opt/opencv/lib -lcxcore -lcv -lhighgui \
    -o camshiftdemo camshiftdemo.c

    naturalmente se avete incluso in un file altre librerie dovete aggiungerle!! ciaoooo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.