首页 > 其他分享 >学习opencv

学习opencv

时间:2023-10-17 23:55:09浏览次数:32  
标签:编译 Mat OpenCV image C++ 学习 opencv

学习OpenCV可以按照以下步骤进行:

  1. 学习C++:OpenCV主要使用C++进行开发,因此学习C++是基础。了解C++的基础语法、数据类型、指针、内存管理等基本知识,为后续学习OpenCV打下基础。
  2. 学习OpenCV基础:了解OpenCV的基本概念和函数,包括图像处理、视频处理、特征提取等。可以通过OpenCV官方文档或者教程进行学习。
  3. 深入学习图像处理:在OpenCV中,图像处理是一个重要的领域。学习图像的基础知识,如像素、色彩空间、滤波等,并掌握OpenCV提供的各种图像处理函数。
  4. 深入学习计算机视觉:计算机视觉是OpenCV的核心领域之一。学习计算机视觉的基础知识,如特征检测、物体检测、图像分割等,并掌握OpenCV提供的各种计算机视觉算法。
  5. 掌握OpenCV的高级功能:OpenCV不仅提供了基本的图像处理和计算机视觉功能,还提供了许多高级的功能,如机器学习、光学字符识别等。可以根据自己的兴趣和需求进行学习和掌握。
  6. 实践项目:通过实践项目来巩固所学知识,并提高自己的实际开发能力。可以找一些OpenCV相关的项目进行实践,如人脸识别、车牌识别、机器人视觉等。

总之,学习OpenCV需要一定的数学和编程基础,需要持续的实践和探索,同时也可以通过参加相关课程和参考相关教程来系统学习。

 

开胃小菜:

OpenCV(Open Source Computer Vision)是一个开源的计算机视觉库,它包含了大量的图像和视频处理函数。其中,Mat类是OpenCV中用于存储图像和矩阵的容器类。

下面是从安装OpenCV到利用Mat创建存储图像和矩阵的实例的详细步骤:

 

1. 安装OpenCV

安装OpenCV需要先安装一些依赖项,如CMake、GCC、G++、Boost等。下面是具体的步骤:

(1)下载OpenCV源代码并解压缩到本地。
(2)安装CMake并配置环境变量。
(3)安装GCC、G++、Boost等依赖项。
(4)使用CMake创建项目并配置OpenCV。
(5)使用编译器编译项目,并找到安装目录进行安装。

 

2. 创建并配置OpenCV项目

使用CMake创建一个新的项目,并将OpenCV源代码添加到该项目中。在配置时需要指定使用的编译器和编译器版本。

 

3. 编译OpenCV

使用编译器编译OpenCV项目。如果出现任何问题,可以查看CMake生成的文档以了解如何解决它们。

 

4. 利用Mat创建存储图像和矩阵的实例

下面是一个简单的示例程序,演示如何使用Mat创建和存储图像和矩阵数据:

(1)创建一个名为“image_process.cpp”的文件,并将以下代码复制到该文件中:

#include <opencv2/opencv.hpp>  
using namespace cv;  
  
int main() {  
    // 从文件中读取图像数据并存储到Mat对象中  
    Mat image = imread("image.jpg");  
  
    // 创建空的Mat对象并向其中存储数据  
    Mat matrix(3, 3, CV_32F); // 创建一个3x3的矩阵,数据类型为32位浮点数型  
    for (int i = 0; i < 3; i++) { // 向其中填充数据  
        for (int j = 0; j < 3; j++) {  
            matrix.at<float>(i, j) = (i + j); // 向其中填充数据  
        }  
    }  
  
    // 将Mat对象中的图像数据显示出来  
    imshow("Image", image); // 显示图像窗口  
    waitKey(0); // 等待用户按下按键后显示下一个窗口  
  
    // 将Mat对象中的矩阵数据显示出来  
    imshow("Matrix", matrix); // 显示矩阵窗口  
    waitKey(0); // 等待用户按下按键后显示下一个窗口  
  
    return 0;  
}

  

(2)在终端中进入项目根目录,并执行以下命令进行编译:

g++ image_process.cpp -o image_process pkg-config --cflags --libs opencv4

行代码是一个使用g++编译器的C++编译命令。每个参数的含义如下:

g++: 这是GNU编译器套件中的C++编译器。它用于将C++源代码编译为可执行二进制文件。
image_process.cpp: 这是要编译的C++源代码文件名。
-o image_process: -o表示输出文件名。在这个例子中,编译后的可执行文件将被命名为image_process。
pkg-config --cflags --libs opencv4: 这个命令用于获取OpenCV库的相关信息,包括头文件路径和链接库路径。
    pkg-config是一个帮助你在编译时确定库的编译和链接标志的工具,
    --cflags获取头文件路径,
    --libs获取链接库路径。
    opencv4是你想使用的库的名称。

  

(3)执行以下命令运行程序:./image_process运行程序后,会先弹出一个显示图像的窗口,然后弹出一个显示矩阵的窗口。

 

标签:编译,Mat,OpenCV,image,C++,学习,opencv
From: https://www.cnblogs.com/linuxws/p/17771078.html

相关文章

  • java学习_01
    字面量类型整数类型不带小数点的数字小数类型带小数点的数字字符串类型用双括号括起来的内容字符类型用单引号括起来的,内容只有一个比如:'a','b','c'布尔类型布尔值,表示真假空类型一个特殊的值,空值null特殊字符'\t'制......
  • 学习C++
    概述:C++的基础语法主要包括变量、常量、数据类型、运算符、控制流语句等。下面分别进行介绍。变量和常量:变量是程序中用于存储数据的标识符,可以改变其值。在C++中,变量必须先声明后使用,声明的语法格式为“数据类型变量名”。例如,声明一个整型变量:inta。常量是在程序中不能改变......
  • java基础漏洞学习----SQL注入漏洞
    java基础漏洞学习----SQL注入漏洞前置基础知识https://www.cnblogs.com/thebeastofwar/p/17759805.html执行SQL语句的几种方式1.Statement执行SQL语句java.sql.Statement是JavaJDBC下执行SQL语句的一种原生方式,执行语句时需要通过拼接来执行若拼接的语句没有经过过滤,将出......
  • C#学习笔记--数据结构、泛型、委托事件等进阶知识点
    C#进阶简单数据结构类ArrayList元素类型以Object类型存储,支持增删查改的数组容器。因而存在装箱拆箱操作,谨慎使用。//ArrayListArrayListarray=newArrayList();//增=================array.Add("Hello");array.Add(true);array.Add("Tony");//添加单个元素array.Add(......
  • 菜鸡go后端开发学习笔记1
        首先了解项目内容及对应的人员:重要的是产品以及前端。1、了解项目,理清逻辑,有什么不通顺的地方不清楚的地方及时的与产品进行沟通。2、在写请求时,主要是前端发送请求给到后端,后端通过逻辑处理获取数据库里面对应的数据,并返回数据。所以请求字段和前端是有交互......
  • 《动手学深度学习 Pytorch版》 9.1 门控循环单元(GRU)
    我们可能会遇到这样的情况:早期观测值对预测所有未来观测值具有非常重要的意义。考虑一个极端情况,其中第一个观测值包含一个校验和,目标是在序列的末尾辨别校验和是否正确。在这种情况下,第一个词元的影响至关重要。我们希望有某些机制能够在一个记忆元里存储重要的早期信息。如......
  • 【无监督机器学习】8.聚类和异常检测
    聚类聚类的定义聚类是一种无监督学习,它将相似的对象归到同一个簇中。聚类作为一种无监督学校,和分类的区别在于,分类的目标事先已知,而聚类的目标是事先不知道的。聚类应用聚类在很多领域都有应用,比如:新闻文章分组市场细分DNA分析天文数据分析聚类的算法K-meansK-means......
  • 数组问题技巧学习指南
    前置芝士求解两个有序数组的第K小乘积先统计分负数乘积个数neg、正数乘积个数pos以及乘积为0的个数zero,然后分三种情况讨论:k≤negk,我们可以二分负数答案,统计不超过二分值的乘积个数;neg<k≤neg+zero,此时返回0;k>neg+zero,我们可以二分正数答案,统计不超过二分值的乘积个数。......
  • IO流,第一个IO流案例学习
    一、首先创建一个类,写好main函数其次在我们的电脑里创建一个文本文档(字节流也可以读取文本文档)  内容为abc 二、编写代码 注意的是read方法一次只能读取一个 三、结果  因为我们的四个变量是用int来定义的 所以会是一个十进制数字  -1是read方法返回的,没有可......
  • Unity3D学习记录02——PloyBrush场景搭建
    首先在Window->PackageManager里面搜索PolyBrush,下载后将URP的Shader样例导入 导入后Asset文件夹下会有Sample的文件夹,在菜单栏Tools->PolyBrush->PolyBrushWindow打开窗口这个窗口最上面的五个,第一个是用来调整地形高低的,第二个是进行柔化场景的,第三个是调整颜色的,第四个......