¿Por qué OpenCV rechaza cvLoadImage ("string.ext"), pero acepta cvLoadImage (argv [1])?

StackOverflow https://stackoverflow.com/questions/445295

  •  22-07-2019
  •  | 
  •  

Pregunta

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


int main(int argc, char* argv[]){
    cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
    IplImage* image = 0;
    ->->image = cvLoadImage(argv[1]);<-<-
    if(!image) printf("Unable to load image!");
    cvShowImage("Window1", image);
    char c = cvWaitKey(0);
    cvReleaseImage(&image);
    cvDestroyWindow("Window1");
    return 0;
}

Si reemplazo la línea indicada con cvLoadImage (" 247.png ") obtengo una ventana en blanco y la imagen permanece igual a cero

Si ejecuto el exe y le doy 247.png como argumento, es genial. Si pongo el " 247.png " directamente en el código y compilar y ejecutar Visual Studio 2008, falla. Si construyo y ejecuto desde el símbolo del sistema, funciona.

¿Por qué es esto? Estoy un poco cansado de avanzar sin bajar esto.

¿Fue útil?

Solución

En Proyecto- > Propiedades- > Propiedades de configuración- > Depuración hay un campo '' Directorio de trabajo ''. Establezca eso en el directorio en el que desea ejecutar y eso debería solucionar el problema.

Otros consejos

¿Está seguro de que " 247.png " está en el directorio de trabajo actual cuando tiene el nombre codificado?

Ejecute el programa en algo como Process Monitor para ver qué realmente se está abriendo el archivo (o qué errores de E / S de archivo puede haber).

Después de su edición para agregar más información a la pregunta (el problema ocurre cuando se ejecuta desde VS2008) este es casi seguramente su problema. El directorio actual en el que VS inicia el programa no es el directorio que tiene el " 247.png " archivo.

¿Puedes verificar cuál es tu cwd ?

Puede #include < direct.h > y usar la función _getcwd para ver qué es. Eso probablemente lo señale al culpable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top