Acabo de empezar con OpenCV. He descargado OpenCV 2.4.9, y ha instalado MSVS de 2010. Mi Windows es de 64 bits. He seguido los siguientes pasos:

una. En Propiedades de Configuración, haga clic en Depuración -> medio Ambiente y copiar pegar: PATH=C:\opencv\build\x86\vc10\bin

b. Directorios de VC++- > Incluir directorios y agregar las entradas: C:\opencv\build\include

c. Directorios de VC++- > Biblioteca de directorios y agregar las entradas: C:\opencv\build\x86\vc10\lib

d. Enlazador -> Entrada -> Dependencias Adicionales y agregar la siguiente:

opencv_calib3d249.lib;opencv_contrib249.lib;opencv_core249.lib;opencv_features2d249.lib;opencv_flann249.lib;opencv_gpu249.lib;opencv_nonfree249.lib;opencv_highgui249.lib;opencv_imgproc249.lib;opencv_legacy249.lib;opencv_ml249.lib;opencv_objdetect249.lib;opencv_ts249.lib;opencv_video249.lib;

Me encontré con el siguiente código:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
        //read an image
        cv::Mat image= cv::imread("img.jpg");
        //create image window named "My Image"
        cv::namedWindow("My Image");
         cv::waitKey(1000);
        //show the image on window
        cv::imshow("My Image", image);
        //wait key for 5000 ms
        cv::waitKey(50);
        return 1;
}

Para obtener el error:

Excepción no controlada en 0x76d2b727 en BTP1.exe: Microsoft C++ excepción: cv::Excepción en la posición de memoria 0x003af414

Me di cuenta de esto podría ser debido a la X64 y x86 desajuste. En cambio las entradas en una. a PATH=C:\opencv\build\ x64 \vc10\bin y en c. a C:\opencv\build\ x64 \vc10\lib, me sale el siguiente error:

La aplicación no se pudo iniciar correctamente (0xc000007b). Haga clic en ACEPTAR para cerrar la aplicación.

Consejos sobre cómo puedo conseguir más de este tema?

  • A veces, me sale el siguiente mensaje de error: Error LNK1112: módulo tipo de máquina ‘x64 conflictos con la máquina de destino de tipo ‘X86’
  • Lo hizo incluso llegar a la primera línea de main()? Si es así, ¿hasta abajo hizo llegar?
  • Es lo que hace. Se abre el namedWindow así, y se espera para el 1 de s, antes de darle la excepción de memoria.
InformationsquelleAutor tonnerrian | 2014-08-31

2 Comentarios

  1. 2

    Esto probablemente ocurre porque la imagen que está tratando de pantalla está vacía, tal vez porque la imagen no está en la carpeta de la derecha. Para confirmar esto, cambie el código para

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    
    #include <iostream>  //std::cout
    
    int main() {
        //read an image
        cv::Mat image= cv::imread("img.jpg");
    
        //add the following lines
        if(image.empty())
           std::cout << "failed to open img.jpg" << std::endl;
        else
           std::cout << "img.jpg loaded OK" << std::endl;
    
        ...   //the rest of your code
  2. 2

    Resuelto el problema. En algunos retoques, me encontré con que el programa se estaba ejecutando en el modo de Lanzamiento, y no el modo de Depuración.

    Que era un problema con las Dependencias Adicionales. No agregar las versiones de Depuración de la misma. (XYZ249d.lib)

Dejar respuesta

Please enter your comment!
Please enter your name here