Makefile编译问题----C++调用caffe

Makefile编译问题(其实也是C++调用caffe,如何在Linux下编译运行的问题)

博文https://blog.csdn.net/zxj942405301/article/details/71799279中只给出了MTCNN.h和MTCNN.cpp,需要自己写main.cpp,所以若只是想让编译通过,我写了一个简单的demo:

#include <iostream>
#include "MTCNN.h"

int main(int argc, char const *argv[])
{
    /* code */
    vector<Mat> alignedFace;
    /*这是https://github.com/kpzhang93/MTCNN_face_detection_alignment/tree/master/code/codes/MTCNNv2/model中8个caffemodel、deploy文件所在目录路径*/
    const string& modelPath="$/MTCNN_face_detection_alignment/code/codes/MTCNNv2/model";
    MTCNN mcnn = MTCNN(modelPath);
    Mat img = imread("Jennifer_Aniston_0016.jpg", CV_LOAD_IMAGE_UNCHANGED);
    vector<Rect>* faceRects;
    alignedFace = mcnn.getFaceRects(img, faceRects);
    namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
    imshow("MyWindow", alignedFace);
    cout<<"this is a test"<<endl;
    waitKey(0);
    destroyWindow("MyWindow");
    return 0;
}

Makefile文件如下:

# this is a makefile for caffe  
TARGET := classify  
# caffe directory  
CAFFE_DIR := $/caffe-master
# caffe include  
CAFFE_INCLUDE := $(CAFFE_DIR)/include
# caffe build   
CAFFE_BUILD := $(CAFFE_DIR)/build
# caffe build lib  
CAFFE_BUILD_LIB := $(CAFFE_BUILD)/lib  
# caffe build src  
CAFFE_BUILD_SRC := $(CAFFE_BUILD)/src  

# dependency libraries and caffe linking libs  
LFLAGS := -pthread -lnsl -lX11  
LFLAGS += -lcaffe -lglog -lgflags -lopencv_flann -lprotobuf -lboost_system -lboost_filesystem  -lboost_thread -lboost_coroutine -lboost_context -lboost_regex -lm -lhdf5_hl -lhdf5 -lleveldb -lsnappy -llmdb  -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_objdetect -lstdc++ -lcblas -latlas  

LFLAGS += -Wl,-rpath=$(CAFFE_BUILD_LIB) -L/usr/lib/x86_64-linux-gnu/hdf5/serial
LFLAGS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui

# rules  
CFLAGS := -g -I . -I $(CAFFE_INCLUDE) -I $(CAFFE_DIR)/src -I $(CAFFE_BUILD_SRC) -I/usr/include/hdf5/serial -I ./ -Wall -DCPU_ONLY -DUSE_OPENCV  
CC := g++  

SRC += main.cpp  MTCNN.cpp  #这里一定是所有的cpp文件

$(TARGET):$(SRC)  
	$(CC) -o $(TARGET) -O0 -std=c++11 $(SRC) $(CFLAGS) $(LFLAGS) -L$(CAFFE_BUILD_LIB) -Wno-sign-compare  

clean :  
	@rm -f $(TARGET) 

注意:Makefile文件中$(CC) -o $(TARGET)和@rm -f $(TARGET)前都是一个tab键,不能是4个空格

编译步骤:①直接执行make命令;②执行./classify运行

猜你喜欢

转载自blog.csdn.net/lantuxin/article/details/81259801