vscode + CMake编译(opencv显示图片工程)

1.opencv

1.1Mat容器:

在OpenCV中,cv::Mat是一个重要的类,用于表示和操作矩阵或多维数组,通常用于图像处理和计算机视觉任务。

cv::Mat类具有以下特点和功能:

  1. 多维数据存储:cv::Mat可以存储多维数据,包括图像、矩阵、向量等。它是一个灵活的数据容器,可以存储不同类型和大小的数据。

  2. 数据访问和操作:cv::Mat提供了各种方法来访问和操作数据。你可以使用下标运算符 () 访问和修改单个元素,也可以使用迭代器遍历矩阵中的所有元素。此外,还有一些便捷的函数和运算符可用于常见的矩阵操作,如转置、缩放、裁剪等。

  3. 数据类型和通道:cv::Mat支持不同的数据类型,如整数、浮点数和复数。它还可以存储多通道数据,例如彩色图像的三通道(BGR 或 RGB)表示。

  4. 内存管理:cv::Mat使用智能指针技术,自动管理底层数据的内存。它可以自动分配和释放内存,使得内存管理变得更加方便和安全

  5. 与其他数据结构的互操作性:cv::Mat可以与其他数据结构进行互操作。它可以与标准C++数组、STL容器以及其他OpenCV数据结构(如cv::Pointcv::Rect)进行无缝集成。

Mat基本上是一个具有两个数据部分的类:①矩阵头:大小,存储的方法,地址等 ;②矩阵指针:指向实际数据存储区域的指针;

Mat对象都有自己的头部,但通过使他们的指针指向相同的地址,矩阵可以在他们两个实例中共享。

Mat A, C;                          // 创建两个MAT容器的对象头
A = imread(argv[1], IMREAD_COLOR); // 为A对象添加实际的矩阵数据,imread() 返回的就是一个Mat对象。
Mat B(A);                                 // 使用拷贝构造函数创建Mat对象B
C = A;                                    // 修改操作

上述的所有对象,最后指向相同的数据矩阵,但它们拥有自己的头部;使用它们中的任何一个对象修改矩阵都会影响其他的对象。

可以询问矩阵本身是否属于多个Mat对象,它们在不再需要时负责清理它。
这是通过使用引用计数机制来处理的。每当有人复制Mat对象的标题时,矩阵的计数器就会增加。每当头部被清洁时,这个计数器就会减少。当计数器达到零时,矩阵也被释放。有时你也想复制矩阵本身,所以OpenCV提供了cv :: Mat :: clone()和cv :: Mat :: copyTo()函数。

Mat F = A.clone(); //F和A将不会采用同一个引用计数系统
Mat G;
A.copyTo(G); // 现在修改F和G都不会影响A


1.2 imread()函数


imread()函数返回一个cv::Mat对象,表示读取的图像数据。

cv::Mat cv::imread(const std::string& filename, int flags = cv::IMREAD_COLOR);
filename:要读取的图像文件的路径和名称。
flags:可选参数,用于指定图像的读取方式。默认为cv::IMREAD_COLOR,表示以彩色方式读取图像。
以下是flags参数的可选值:
    cv::IMREAD_COLOR:以彩色方式读取图像,忽略图像的透明度通道(默认)。
    cv::IMREAD_GRAYSCALE:以灰度方式读取图像,将图像转换为单通道灰度图像。
    cv::IMREAD_UNCHANGED:以原始方式读取图像,包括图像的通道和透明度通道。

1.3 imshow()函数

imshow()函数将指定的图像数据显示在一个窗口中。窗口的大小会自动根据图像的大小进行调整。如果窗口不存在,则会创建一个新窗口并显示图像;如果窗口已存在,则会更新窗口中显示的图像。

void cv::imshow(const std::string& winname, cv::InputArray mat);
winname:窗口的名称,用于标识不同的窗口。
mat:要显示的图像数据,可以是cv::Mat对象或其他支持的图像数据类型。

1.4 cvtcolor()函数

cvtColor()是OpenCV库中用于图像颜色空间转换的函数。它可以将图像从一个颜色空间转换为另一个颜色空间

void cv::cvtColor(cv::InputArray src, cv::OutputArray dst, int code, int dstCn = 0);
src:输入图像的数据,可以是cv::Mat对象或其他支持的图像数据类型。
dst:输出图像的数据,用于存储转换后的图像数据,可以是cv::Mat对象或其他支持的图像数据类型。
code:颜色空间转换的代码,用于指定源图像和目标图像的颜色空间。具体的转换代码由OpenCV提供,如cv::COLOR_BGR2GRAY表示将BGR图像转换为灰度图像。
dstCn:可选参数,表示目标图像的通道数。默认为0,表示目标图像的通道数与源图像的通道数相同。

1.5 resize()函数

void cv::resize(cv::InputArray src, cv::OutputArray dst, cv::Size dsize, double fx = 0, double fy = 0, int interpolation = cv::INTER_LINEAR);
src:输入图像的数据,可以是cv::Mat对象或其他支持的图像数据类型。
dst:输出图像的数据,用于存储调整大小后的图像数据,可以是cv::Mat对象或其他支持的图像数据类型。
dsize:目标图像的尺寸,用cv::Size(width, height)指定。
fx:可选参数,水平方向的缩放比例因子。默认为0,表示根据目标图像的宽度自动计算缩放比例。
fy:可选参数,垂直方向的缩放比例因子。默认为0,表示根据目标图像的高度自动计算缩放比例。
interpolation:可选参数,用于指定插值方法。默认为cv::INTER_LINEAR,表示使用双线性插值进行图像的缩放。

1.6 puttext()函数

void cv::putText(cv::InputOutputArray img, const std::string& text, cv::Point org, int fontFace, double fontScale, cv::Scalar color, int thickness = 1, int lineType = cv::LINE_8, bool bottomLeftOrigin = false);

2.Cmake

2.1 简介

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件;Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用;CMake 的组态档取名为 CMakeLists.txt;

2.2 vscode使用CMake

①下载CMake:

Download CMake

②系统环境配置好:

根据cmake的安装位置去添加,可以在cmd中,测试是否成功。

③安装两个插件:

确保你的vscode本来就是可以跑的,可以上网搜一下vscode环境配置

④创建文件夹:

src:存放源文件;inc:存放头文件;build:执行cmake会生成一些配置文件比较杂,放在该目录下;bin:存放生成的可执行程序;CmakeLists.txt文件;

⑤编写一个简单的OpenCV示例代码(.cpp):

#include <iostream> 
#include <opencv2/opencv.hpp> // 包含opencv的库头文件

using namespace std;
using namespace cv;  //使用命名空间cv,包含空间中方法及属性

int main(int argc, char** argv )
{
    if ( argc != 2 ) // 命令行参数个数不是2个的时候
    {
        printf("使用指令: DisplayImage <Image_Path>\n"); // 提示:按照固定格式输入指定内容!
        return -1;
    }
    Mat img; //创建一个名称为img的图像容器(这个后边会介绍到)
    img = imread( argv[1], 1 ); //为该容器读取命令行中 DisplayImage 之后的参数(图片路径“<Image_Path>”)
    if ( !img.data ) //如果读取数据为空(没有读取到图片)
    {
        cout<<"没有图片数据!"<<endl;
        return -1;
    }
    namedWindow("检索到的图片", WINDOW_AUTOSIZE );//创建图片显示窗口
    imshow("Display Image", img);//显示图片
    waitKey(0); //延迟等待
    return 0;
}

⑥编写CMakeList.txt:

# 选择最匹配的最低的Cmake版本
cmake_minimum_required(VERSION 2.8) 
# 创建的程序的名称(项目的名称)
project( DisplayImage )  
#指定头文件的路径,PROJECT_SOURCE_DIR宏对应的值是工程的根目录
include_directories(${PROJECT_SOURCE_DIR}/inc)
find_package( OpenCV REQUIRED ) # 找到需求的库或者组件
#[[
    aux_source_directory(< dir > < variable >)
    dir:要搜索的目录
    variable:将从dir目录下搜索到的源文件列表存储到该变量中
]]
aux_source_directory(${PROJECT_SOURCE_DIR}/src SRCS)
#设置可执行程序路径,EXECUTABLE_OUTPUT_PATH是可执行路径的宏
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#生成可执行程序  add_executable(可执行程序名 源文件名称)
add_executable( DisplayImage ${SRCS}) 
#链接的库
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

⑦生成可执行文件:

进入build目录下敲击以下命令表示cmake指定MinGW编译生成makefile

cd <DisplayImage_directory> /bulid/ # 切换到项目路径bulid当中
cmake .. -G "MinGW Makefiles" # 编译当前项目
ming32-make # 生成可执行文件(名称为Cmake文件中的project()中的名称)

ps另一种方法:

在setting中加这一句:

在vscode中可以使用ctrl+shift+p,搜索CMake:Configure

点击效果如下


生成了makefile之后,在终端make生成可执行文件

⑧执行程序:

cd ../bin/ #跳转到可执行文件的目录
./DisplayImage xxx.jpg #添加要显示的图片(图片路径),并且执行

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在VS Code中使用CMake配置OpenCV C++项目,可以按照以下步骤进行操作: 1. 确保已经安装了Visual Studio Code和CMake,并将它们添加到系统的环境变量中。 2. 创建一个新的文件夹作为您的项目文件夹,并在其中创建一个CMakeLists.txt文件。在CMakeLists.txt中,输入以下内容: ```cmake cmake_minimum_required(VERSION 3.0) project(YourProjectName) find_package(OpenCV REQUIRED) add_executable(YourExecutableName main.cpp) target_link_libraries(YourExecutableName ${OpenCV_LIBS}) ``` 这个CMakeLists.txt文件指定了项目的最低CMake版本、项目名称以及要使用OpenCV库。 3. 在项目文件夹中创建一个main.cpp文件,并编写您的OpenCV C++代码。 4. 打开Visual Studio Code,选择“文件”->“打开文件夹”,并选择您的项目文件夹。 5. 安装CMake Tools插件。在Visual Studio Code的扩展面板中搜索"CMake Tools"并安装。 6. 在Visual Studio Code的底部状态栏,找到一个齿轮图标,点击它以打开CMake Tools。 7. 在CMake Tools的侧边栏中,选择您的项目文件夹并点击“配置”。 8. 在弹出的对话框中,选择一个构建目录(可以是您项目文件夹下的子文件夹),然后选择CMake工具链。 9. 在弹出的对话框中,输入以下参数并保存: - "cmake.configureOnOpen": false - "cmake.buildDirectory": "build" 这些参数将配置CMake Tools以在打开项目时不自动运行CMake,并将生成的文件放在名为"build"的文件夹中。 10. 回到CMake Tools的侧边栏,点击“配置”按钮,然后选择“生成”按钮。这将运行CMake生成您的项目。 11. 在CMake Tools的侧边栏中,点击“构建”按钮来编译您的项目。 12. 您可以在Visual Studio Code的终端中运行您的可执行文件,或者根据需要进行调试。 这样,您就可以在VS Code中使用CMake配置OpenCV C++项目了。记得根据您的具体项目情况修改CMakeLists.txt和main.cpp文件。祝您成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值