Скомпилированный исходный код OpenCV падает на Google Colab без каких-либо сообщений об ошибках - PullRequest
0 голосов
/ 04 июля 2019

Я экспериментирую с компиляцией OpenCV в Google Colab из исходного кода.Мой скрипт выглядит следующим образом:

!pip3 uninstall -y opencv_python
!pip2 uninstall -y opencv_python
!apt purge --remove libopencv-dev
!apt-get install build-essential cmake unzip pkg-config libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libx265-dev libgtk-3-dev libatlas-base-dev gfortran python3-dev checkinstall libeigen3-dev ccache
%cd /content
!mkdir opencv
%cd opencv
!wget https://github.com/opencv/opencv/archive/4.1.0.zip
!unzip -qq 4.1.0.zip
!git clone https://github.com/opencv/opencv_contrib.git 
%cd opencv-4.1.0
!mkdir build
%cd build
!cmake -DCPU_BASELINE_REQUIRE=SSE4_1,SSE4_2,AVX,FP16,AVX2,AVX512_SKX -DPYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=/content/opencv/opencv_contrib/modules -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_GENERATE_PKGCONFIG=ON -DENABLE_CCACHE=ON -DWITH_TBB=ON  -DWITH_EIGEN=ON -DWITH_CUDA=ON -DWITH_CUFFT=ON -DCUDA_ARCH_BIN=75 -DBUILD_opencv_cudacodec=OFF -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DBUILD_JAVA=OFF -DBUILD_opencv_js=OFF -DBUILD_opencv_ts=OFF ..
!make -j2
!make install

Все успешно компилируется и устанавливается.Я могу проверить версию OpenCV и установленные файлы, используя pkg-config.Но в тот момент, когда я пытаюсь использовать любую функцию OpenCV в Python или C ++, происходит сбой.

Этот код Python вызывает сбой и перезапуск виртуальной машины:

import cv2

Любой код C ++ с функцией OpenCVв нем происходит выход без отображения каких-либо сообщений об ошибках:

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

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
   try
   {   
         waitKey(1);
   }
   catch( const cv::Exception& e )
   {
         cerr << "exception caught: " << e.what() << endl;
   }

    cout<<"hello"<<endl;
    return 0;
}

Я попытался отключить CUDA, изменив тип среды выполнения на None вместо GPU, но ничего не решило проблему.ldd печатает каждую зависимость правильно и valgrind --leak-check=yes executable дает этот вывод .

Может ли кто-нибудь обнаружить проблему здесь?

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