Запуск программы OpenCV на Windows - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть простая тестовая программа для OpenCV:

#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgcodecs/imgcodecs.hpp"
#include <iostream>

int main(int argc, char **argv){
    std::cout << "HELLO" << std::endl;

    cv::Mat im=cv::imread((argc==2)? argv[1]: "testing.jpg",cv::IMREAD_COLOR);
    if (im.empty()){
        std::cout << "Cannot open image." << std::endl;
    } else {
        cv::namedWindow("DisplayWindow",cv::WINDOW_AUTOSIZE);
        cv::imshow("DisplayWindow",im);
        cv::waitKey(0);
    }
    return 0;
}

Однако при запуске программа ничего не делает. Hello не выводится на консоль и не выдает ошибку.

./main
#Nothing.......

Стоит отметить, что программа завершается, но не надлежащим образом. (Возвращаемое значение не равно нулю) Я не думаю, что это ошибка компоновки, поскольку они фактически выдают ошибку.

Есть идеи о том, что происходит и / или как ее исправить? Я использую компьютер Windows, если это что-то меняет.

1 Ответ

0 голосов
/ 23 апреля 2020

Оказывается, приглашение windows cmd действительно имеет некоторое применение. (ОЧЕНЬ удивительно, я долго отказывался от него go)

Я запустил тестовую программу из строки windows cmd, и она сказала, что отсутствуют следующие библиотеки.

libstdc++-6.dll
libgcc_s_dw2-1.dll
libwinpthread-1.dll

Чтобы исправить стандартные библиотеки C ++ и C, я просто статически связал их, используя приведенную ниже команду. (По-видимому, это обычная практика для Windows из-за проблем с контролем версий ):

g++ -static-libgcc -static-libstdc++ ...rest of compile/link cmd...

Чтобы исправить dll winpthread, я просто скопировал dll в папку bin моего программа и все заработало!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...