ubuntu22下C++ kdevelop环境搭建:OpenCV示例

目录

第一章 Ubuntu22下OpenCV4.6.0+contrib模块编译安装
第二章 ubuntu22下C++ kdevelop环境搭建:OpenCV示例
第三章 C++下OPENCV驱动调用海康GigE工业相机



前言

在上一篇文章中笔者详细介绍了ubuntu22系统下opencv的编译和安装,本文将介绍ubuntu系统下C++开发环境的搭建。
以及以opencv代码为示例展示一个完整的开发流程。
本文涉及代码地址:https://gitee.com/C-Qiyao/cv_demo


一、KDevelop是什么?

在这里插入图片描述

KDevelop是一款功能强大的集成开发环境应用程序,支持多种不同语言,其中包括C、C++、Perl、Python、PHP、Java、Fortran、Ruby、Ada、Pascal、SQL、GO和Bash脚本。支持的构建系统包括GNU(automake)、cmake、qmake和自定义项目的make以及不需要Makefile的脚本项目。

二、使用步骤

1.安装KDevelop

安装代码如下:

$ sudo apt-get update
$ sudo apt-get install kdevelop

2.新建工程

根据需要创建所需要的模板,笔者在此展示一个终端demo所以选择standard->Terminal类型,选择cmake生成。

在这里插入图片描述

可以选择版本控制系统

在这里插入图片描述

正常情况下IDE会自动为你生成以下文件以及目录:

在这里插入图片描述

3.编辑CMakeList文件

如果我们此刻在main.cpp文件内直接include opencv的化会出现找不到路径的情况

在这里插入图片描述

KDevelop开发不像在windows下的VisualStudio一样可以在工程参数内设置include path以及附加库目录,对此我们需要编辑CMakeList来添加我们所需要的文件。

在此笔者以OpenCV库导入为例,当前原有的CMakeList内容如下

cmake_minimum_required(VERSION 3.0)

project(cv_demo)

add_executable(cv_demo main.cpp)

install(TARGETS cv_demo RUNTIME DESTINATION bin)

我们如果需要使用opencv库,则需要修改对应的CMakeList,笔者按照自己的习惯提供带有OPENCV的cmakelist,改写CMakeList成如下形式:

# cmake needs this line
cmake_minimum_required(VERSION 3.0)
# 声明cmake要求的最低版本

set(PROJECT_NAME "cv_demo")
# 设置PROJECT_NAME的值,方便批量修改工程名

set(CMAKE_BUILD_TYPE "Release")
# 设置编译类型

project(${PROJECT_NAME})
# 引用PROJECT_NAME,设置工程名

find_package(OpenCV REQUIRED)
# 搜索OpenCV库

include_directories(${OpenCV_INCLUDE_DIRS})
# 添加opencv路径

message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
# 输出一些信息

add_compile_options(-std=c++11)
# 设置C++版本为C++11

add_executable(${PROJECT_NAME} main.cpp)
# 设置可执行文件对于的主函数所在文件(main函数所在文件)

target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} )
# 链接主函数和opencv库

在kdevelop下保存该文件的修改会自动进行cmake,得到以下内容configure完毕。
在这里插入图片描述

此时打开main.cpp 发现波浪线消失,成功include opencv库

在这里插入图片描述

4.编写函数文件

笔者直接在main.cpp同级目录下新建一个cv_test.cpp文件,内部实现opencv的摄像机打开和视屏的展示相关函数。

(1)代码编写

main.cpp如下所示:

#include <iostream>
#include "cv_test.cpp"
using namespace std;
int main(int argc, char **argv) {
    
    
    camera cam(0);
    cout << "get one pic" << std::endl;
    cam.cap_one_pic();
    cam.show_one_pic();
    return 0;
}

cv_test.cpp如下所示:

#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include <opencv2/video/video.hpp>
using namespace std;
using namespace cv;

class camera{
    
    
public:
    void cap_one_pic();
    void show_one_pic();
    camera(int input);
private:
    Mat pic;
    int i;
    VideoCapture cap;
};
camera::camera(int input)
{
    
    
    cap.open(input);
}
void camera::cap_one_pic()
{
    
    
    cap.read(pic);
}
void camera::show_one_pic()
{
    
    
    imshow("test1",pic);
    cout << "image:" << pic.rows << "," << pic.cols << endl;
    int key=waitKey(0);
}

(2)cmake设置动态链接库(可选)

可以将cv_test.cpp编译成动态链接库(windows下为.dll ,linux下为.so),在此仅供参考思路

修改cmakelist,添加以下语句:

add_library(cv_test SHARED cv_test.cpp)
# SHARED表示生成动态链接库cv_test

target_link_libraries(${PROJECT_NAME} cv_test )
#将cv_test链接至主程序

保存cmakelist之后执行构建(make)指令,在build文件夹得到以下内容

qiyao@qiyao-Legion-Y9000X-IAH7:~/projects/cv_demo/build$ ls
build.ninja     CMakeFiles           compile_commands.json  libcv_test.so
CMakeCache.txt  cmake_install.cmake  cv_demo

可以发现cv_test.cpp被编译为了libcv_test.so,在终端内执行cv_demo

$ ./cv_demo
#输出
#get one pic
#image:480,640

输出图像运行结果

在这里插入图片描述


三、总结

以上就是本文的主要内容,本文仅仅简单介绍了笔者自己在linux下的C++编程流程,也简单记录了自己编写cmakelist的记录,也向以此为从windows下Visualstudio等编程环境转向linux编程的读者提供一点点自己的经验,方便初学者入门。

猜你喜欢

转载自blog.csdn.net/qq_19449259/article/details/127715977
今日推荐