Linux에서 Cmake를 통해 opencv 라이브러리를 연결할 수 없습니다.

Linux에서 Cmake를 통해 opencv 라이브러리를 연결할 수 없습니다.

예전에는 Arch Linux pckage Manager(pacman)에서 OpenCV3를 사용했는데 잘 작동했는데, 이를 제거하고 소스에서 OpenCV 3.4.1 및 OpenCV-Contrib을 설치했는데, 이전 프로젝트에서도 다시 시도했을 때에도 마찬가지였습니다. 컴파일할 때 아무런 효과가 없습니다. CMakeLists.txt 파일은 다음과 같습니다.

cmake_minimum_required(VERSION 2.8)
cmake_policy(SET CMP0012 NEW)
project(Face_Detection)
find_package(OpenCV 3.4.0 REQUIRED)
message("OpenCV Version ${OpenCV_Version}")
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LINK_DIRS})
set(SRC main.cpp)
add_executable(${PROJECT_NAME} ${SRC})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})

다음은 main.cpp 파일입니다(데모용으로 재컴파일 후 모든 프로젝트가 더 이상 작동하지 않음).

#include "opencv2/core.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/face.hpp"
#include "opencv2/imgproc.hpp"

#include <stdio.h> 
#include <fstream>
#include <sstream>

using namespace cv;
using namespace cv::face;
using namespace std;



//Normalize image

static Mat norm_0_255(Mat _src){
     Mat src (_src);
     //The returned normalized image
    Mat dst;
    switch (src.channels()){
         case 1:
             normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC1);
             break;
         case 3:
             normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC3);
             break;
         default:
             src.copyTo(dst);
             break;
     }
     return dst;
 }


 //Read CSV which containts the paths to images
 static void read_csv(const string& filename, vector<Mat>& images,         vector<int>& labels, char separator = ';'){
     ifstream file(filename.c_str(), ifstream::in);
     if(!file){
         string error_message = "No valid inout file was given\n";
         CV_Error(Error::StsBadArg, error_message);
     }
     string line, path, classlabel;
     while(getline(file, line)){
         stringstream liness(line);
         getline(liness, path, separator);
         getline(liness, classlabel);
         if(!path.empty() && !path.empty()){
             images.push_back(imread(path, 0));
             labels.push_back(atoi(classlabel.c_str()));
         } 
     }
  }

 int main(int argc,const char* argv[]){
     return 0;
}

프로젝트를 다시 컴파일한 후 오류가 발생합니다.

cmake ..
make

프로젝트를 다시 컴파일한 후 OpenCV 오류

나머지 오류는 동일합니다. 참고: 이 코드는 샘플에서 가져온 것입니다. 물론 샘플의 일부입니다. 다른 프로젝트도 작동하지 않습니다. 단, 다시 설치하기 전에는 작동했습니다.

답변1

OpenCV를 다시 컴파일하고 LPACKE를 다시 컴파일하여 OpenCV를 컴파일하여 문제를 해결했습니다.문서블로그 게시물

*블록 포스트 참고 마지막 두 명령을 사용하지 않았습니다.

sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'

sudo ldconfig

나는 이 블로그를 가이드로 사용합니다. 여기에 모든 내용이 필요하지는 않습니다* 또한 먼저 소스에서 컴파일하는 방법(cmake 및 make)과 Linux 시스템의 구조(온라인에서 많이 찾을 수 있음)를 배워야 한다고 제안합니다. 문제는 누군가 G+ 게시물에서 나에게 말했듯이 OpenCV가 종속성을 찾을 수 없다는 것입니다.

관련 정보