以前は、Arch Linux pckage Manager(pacman)でOpenCV3を使用していましたが、うまく機能していました。コンパイル時に何の効果もありません。 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
残りのエラーは同じです。注:このコードはサンプルから取得されます。もちろんサンプルの一部です。他のプロジェクトも機能しません。ただし、再インストールする前は動作しました。
答え1
OpenCVを再コンパイルし、LPACKEを再コンパイルしてOpenCVをコンパイルして問題を解決しました。文書このブログ投稿
*ブロックポストメモ最後の2つのコマンドは使用していません。
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
私はこのブログをガイドとして使います。ここにすべてが必要なわけではありません*また、最初にソースでコンパイルする方法(cmakeとmake)とLinuxシステムの構造(オンラインでたくさん見つけることができます)を学ぶ必要があることを示唆しています。問題は、誰かがG +投稿で私に言ったように、OpenCVが依存関係を見つけることができないということです。