公司如何做网站宣传,php网站开发技术文档,给企业做网站的好处,建设银行在上海的招聘网站1.opencv
1.1Mat容器#xff1a;
在OpenCV中#xff0c;cv::Mat是一个重要的类#xff0c;用于表示和操作矩阵或多维数组#xff0c;通常用于图像处理和计算机视觉任务。
cv::Mat类具有以下特点和功能#xff1a; 多维数据存储#xff1a;cv::Mat可以存储多维数据
在OpenCV中cv::Mat是一个重要的类用于表示和操作矩阵或多维数组通常用于图像处理和计算机视觉任务。
cv::Mat类具有以下特点和功能 多维数据存储cv::Mat可以存储多维数据包括图像、矩阵、向量等。它是一个灵活的数据容器可以存储不同类型和大小的数据。 数据访问和操作cv::Mat提供了各种方法来访问和操作数据。你可以使用下标运算符 () 访问和修改单个元素也可以使用迭代器遍历矩阵中的所有元素。此外还有一些便捷的函数和运算符可用于常见的矩阵操作如转置、缩放、裁剪等。 数据类型和通道cv::Mat支持不同的数据类型如整数、浮点数和复数。它还可以存储多通道数据例如彩色图像的三通道BGR 或 RGB表示。 内存管理cv::Mat使用智能指针技术自动管理底层数据的内存。它可以自动分配和释放内存使得内存管理变得更加方便和安全。 与其他数据结构的互操作性cv::Mat可以与其他数据结构进行互操作。它可以与标准C数组、STL容器以及其他OpenCV数据结构如cv::Point和cv::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中可以使用ctrlshiftp搜索CMakeConfigure 点击效果如下 生成了makefile之后在终端make生成可执行文件 ⑧执行程序:
cd ../bin/ #跳转到可执行文件的目录
./DisplayImage xxx.jpg #添加要显示的图片图片路径并且执行