linux下cmake+opencv打开摄像头

一、必备条件:

      gcc、cmake 、opencv

1、安装gcc: sudo apt-get install gcc

2、安装cmake :sudo apt-get install cmake

3、安装opencv

  安装教程见官网文档:https://docs.opencv.org/3.4.3/d7/d9f/tutorial_linux_install.html

二、编写CMakeLists.txt、源文件OpenCamera.cpp

1、CMakeLists.txt

代码段 小部件

#/////////////////////////////////////////////////////////////////
#// Author: LFF	 Date:2019-06-10
#// Description: CMakeLists.txt for OpenCamera
#////////////////////////////////////////////////////////////////
cmake_minimum_required(VERSION 2.8)
project(testCamera)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

#选择自己opencv安装的路径
set(OPENCV_DIR "${PROJECT_SOURCE_DIR}/../../../libs/opencv")  

set(OPENCV_INC_DIR ${OPENCV_DIR}/include)
set(OPENCV_LINK_DIR ${OPENCV_DIR}/lib)

include_directories(${OPENCV_INC_DIR})
link_directories(${OPENCV_LINK_DIR})

add_executable(${PROJECT_NAME} OpenCamera.cpp )
target_link_libraries(${PROJECT_NAME} opencv_core opencv_highgui opencv_imgcodecs opencv_imgproc opencv_videoio opencv_objdetect opencv_dnn)

2、OpenCamera.cpp

#include 
#include 

int main()
{
    cv::Mat image;
    cv:: VideoCapture cap;

    cap.open(0);
    if(!cap.isOpened()) {
	    std::cout << "camera open failed!" << std::endl;
        return -1;
    } else {
        std::cout << "Camera open success!" << std::endl;
    }
    std::cout<<"Print \"ESE\" key exit!" << std::endl;

    char ch;
    while(1) {
	    cap>>image;
        if(image.empty()) {
           std::cout << "Image is empty!" << std::endl;
           break;
        }
        cv::imshow("camera",image);
        ch = cv::waitKey(30);
        if(ch == 27) break;
    }
    return 0;
}

3 、编译、生成可执行文件

//在源文件目录下
mkdir build
cd build
cmake  ..
make

在build目录下即可生成可执行文件 OpenCamera

4、运行程序  ./OpenCamera

5、结果展示

linux下cmake+opencv打开摄像头_第1张图片

三、总结

      近段时间刚接触cmake,编写CMakeLists.txt。以前都是在集成环境中写代码。按一下绿色的三角形按钮就可以执行程序,甚至都不关心可执行文件是放置在哪里,感觉一切都是自然而然的自动。虽然这个CMakeLists.txt比较简单,第一次使用Vim写代码,几行代码,就生成了可执行文件,感觉棒棒哒。有点理解大神们为什么都喜欢使用linux、喜欢使用命令行了。

 

你可能感兴趣的:(图像处理)