在windows系统下,通常使用vs系列程序编辑器,而在linux系统下没有类似的IDE,需要我们自己选择其他工具代替
通常会使用qtCreator和cmake或者qmake来创建工程,下面是分别使用qmake和cmake创建工程的方法
1.使用qmake编译“
首先,点击左上角文件,选择”新建文件或项目“选项,如下图1:在项目中分别有Application、Library、其他项目、Non QT Project、Import Project,如果选择“Application”,Qt Console Application(qt控制台应用)。
2.使用cmake编译
与之前一样新建项目,在项目中选择Non Qt Project选项,并选择Plain C++ Application,之后选择工程保存路径和名称,之后时关键一步:如下图,选择cmake编译工程,点击 “下一步” 直到完成。创建了用CMakeLists.txt作为配置文件的工程。
#以下四行是新建工程之后自动添加的
project(test_camera) #工程名称
cmake_minimum_required(VERSION 2.8) #cmake版本要求
aux_source_directory(. SRC_LIST) #添加源文件,把存储源文件的变量赋值给SRC_LIST
add_executable(${PROJECT_NAME} ${SRC_LIST}) #生成执行文件
if( CMAKE_BUILD_TYPE STREQUAL "Release")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++11 -fPIC")
else()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -std=c++11 -fPIC")#设置寻找外部库的cmake参数的
endif()
message("*** ${PROJECT_NAME}: Build type:" ${CMAKE_BUILD_TYPE} ${CMAKE_CXX_FLAGS} "***")
#设置cmake位置,
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmakes)
#设置opencv的位置
set(OpenCV_DIR ~/opencv-3.2.0/build)
find_package(OpenCV REQUIRED)
#-------------------------------------- 包含头文件 --------------------------------------
include_directories(${OpenCV_INCLUDE_DIRS})#设置opencv头文件包含路径,类似vs中的include路径
include_directories(${Qt5Widgets_INCLUDE_DIRS})
include_directories(${Boost_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
#-------------------------------------- -添加项目- --------------------------------------
#file(GLOB_RECURSE HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/*.*h)可以用来添加头文件和源文件
#file(GLOB_RECURSE SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c*)
#-------------------------------------- -添加链接库- --------------------------------------
TARGET_LINK_LIBRARIES(${PROJECT_NAME}
${OpenCV_LIBS}
${Qt5Widgets_LIBRARIES}
${Boost_LIBRARIES}
)
以上包含了最基本的工程配置,头文件、库文件、源文件、和执行文件生成满足最简单的程序,下面是源文件main.cpp
#include <iostream>
#include"opencv2/highgui.hpp"
#include"opencv2/opencv.hpp"
#include"opencv2/imgcodecs.hpp"
#include"opencv2/imgproc.hpp"
#include"opencv2/video.hpp"
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat frame;
VideoCapture capture;
bool IsOpen = capture.open(1);
if(IsOpen)
{
while(true)
{
capture >> frame;
imshow("test_camera", frame);
waitKey(1);
}
}
cout << "Hello World!" << endl;
return 0;
}
以上只是用了最简单的工程演示过程。