OpenCV学习(1)

主要包括OpenCV的认知;OpenCV的下载与安装(vs2022和opencv455);OpenCV的架构分析;

① OpenCV概念认知:一个基于开源发行的跨平台计算机视觉库,由一系列c函数和c++类组成,轻量而高效;支持许多种编程语言,可实现图像处理和计算机视觉方面的很多通用算法。其主要目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关应用程序。

② OpenCV的下载,安装和配置:

1.下载和安装OpenCV SDK

下载地址:http://opencv.org/downloads.html

下载Windows版本后OpenCV 后解压

2.配置环境变量(即bin文件夹得的路径)

在此电脑属性中找到环境变量开始配置(基于64位电脑)

 对于4步骤D:\Program Files\opencv\build\x64\vc15\bin,D:\Program Files\opencv\build\bin

是要添加的路径,根据自己的文件所在的位置而定

3工程包含(include)目录的配置

打开vs2022,新建空项目;

 

 创建后找到属性管理器->debug|x64,操作包含目录.

 右键->属性->VC++目录->包含目录

 需要添加D:\Program Files\opencv\build\include

                D:\Program Files\opencv\build\include\opencv2

有的版本可能会多D:\Program Files\opencv\build\include\opencv,视情况而定

4工程库(lib)目录的配置

操作库目录

需要添加 D:\Program Files\opencv\build\x64\vc15\lib,根据自己下的版本而定

5.链接库的配置 

找到debug|x64,操作链接库输入

 添加以下信息(直接添加):

opencv_world455d.lib

视版本而定,这里是455版本,如果是其它版本,只需改变455

6,在windows文件夹中加入OpenCV动态链接库)

 即D:\Program Files\opencv\build\x64\vc15\bin目录下的五个.dll文件复制到C:\Windows\System32中去;到此,配置全部完成。

7.最终测试

测试过程为用OpenCV载入并显示一张图片到窗口中。我们用Visual Studio新建一个空项目控制台应用程序,随意命名,比如叫做“HelloOpenCV",然后新建一个cpp文件,输入如下代码。
#include <opencv2/ opencv . hpp>using namespace cv;
int main ()

【 1】读入一张图片
Mat img=imread ("1.jpg") ;ll 【2】在窗口中显示载入的图片imshow(”【载入的图片】 " , img) ;l/

【 3】等待6000 ms后窗口自动关闭waitKey (6000) ;
当然,上述代码中带双斜杠“!/”的文字是注释,输不输入不影响测试结果。我们放置一张名为1.jpg 的图片到工程目录中(和cpp源文件同一路径),然后单击 Visual Studio 中的【运行】按钮。如果配置成功,就不会报错,从而得到一个控制台窗口和一张图片窗口

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
	cout << "OpenCV_Version:" << CV_VERSION << endl;
	Mat img = imread("E:/pictures/8496135.jpg");
	imshow("picture", img);
	waitKey(6000);
	return 0;

}

运行结果:

问题注意:

如果控制台出现如下图所示错误,

 这是输出的日志文件

解决方法:

头文件加入:#include <opencv2/core/utils/logger.hpp>

main函数加入:cv::utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);//控制台不在输出日志文件

即可解决

③ OpenCV基本架构分析:

OpenCV的所有模块,按照宏定义的顺序依次介绍。

( 1 )【calib3d】-——Calibration(校准)和3D这两个词的组合缩写。这个模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法、3D信息的重建等。

(2)【contrib】——Contributed/Experimental Stuf的缩写。该模块包含了一些最近添加的不太稳定的可选功能,不用去多管。新增了新型人脸识别、立体匹配、人工视网膜模型等技术。

(3 )【core】——核心功能模块,包含如下内容:. OpenCV基本数据结构

·动态数据结构

·绘图函数

数组操作相关函数

·辅助功能与系统函数和宏· 与OpenGL的互操作

( 4)【imgproc】——Image和 Process这两个单词的缩写组合,图像处理模块。包含如下内容:

·线性和非线性的图像滤波·图像的几何变换

·其他(Miscellaneous)图像转换·直方图相关

·结构分析和形状描述·运动分析和对象跟踪·特征检测

·目标检测等内容

(5)【features2d】——也就是Features2D,即2D功能框架,包含如下内容:·特征检测和描述

·特征检测器(Feature Detectors)通用接口

·描述符提取器(Descriptor Extractors)通用接口·描述符匹配器(Descriptor Matchers)通用接口·通用描述符(Generic Descriptor)匹配器通用接口·关键点绘制函数和匹配功能绘制函数

(6)【flann】——— Fast Library for Approximate Nearest Neighbors,高维的近似近邻快速搜索算法库,包含以下两个部分:

·快速近似最近邻搜索

·聚类

( 7)【gpu】——运用GPU加速的计算机视觉模块。

(8)【highgui】——高层GUI图形用户界面,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。

(9)【legacy 】——一些已经废弃的代码库,保留下来作为向下兼容,包含如下内容:

·运动分析

·期望最大化·直方图

·平面细分(CAPI)

特征检测和描述(Feature Detection and Description)描述符提取器(Descriptor Extractors)的通用接口通用描述符(Generic Descriptor Matchers)的常用接口·匹配器

( 10)【ml】———Machine Learning,机器学习模块,基本上是统计模型和分类算法,包含如下内容:

·统计模型(Statistical Models)

·一般贝叶斯分类器(Normal Bayes Classifier)·K-近邻(K-Nearest Neighbors)

·支持向量机(Support Vector Machines)·决策树(Decision Trees)

·提升(Boosting)

·梯度提高树(Gradient Boosted Trees)·随机树(Random Trees)

·超随机树(Extremely randomized trees)·期望最大化(Expectation Maximization)·神经网络(Neural Networks)

·MLData

( 11 )【nonfree】——一些具有专利的算法模块,包含特征检测和GPU相关的内容。最好不要商用。

( 12)【objdetect】——目标检测模块,包含Cascade Classification(级联分类)和 Latent SVM这两个部分。

( 13)【ocl】——OpenCL-accelerated Computer Vision,运用OpenCL加速的计算机视觉组件模块。

(14)【photo】—Computational Photography,包含图像修复和图像去噪两部分( 15)【stitching】———images stitching,图像拼接模块,包含如下部分:

·拼接流水线

·特点寻找和匹配图像·估计旋转

·自动校准·图片歪斜·接缝估测●曝光补偿

·图片混合

(16)【superres】——SuperResolution,超分辨率技术的相关功能模块。(17)【ts】OpenCV测试相关代码,不用去管。

(18)【 video】——视频分析组件,该模块包括运动估计、背景分离、对象跟踪等视频处理相关内容。

(19)【Videostab】———Video stabilization,视频稳定相关的组件,官方文档中没有多做介绍,不用管它。

看到这里,相信大家已经对OpenCV的模块架构设计有了一定的认识。OpenCV其实就是这么多模块作为代码容器组合起来的一个SDK ( SoftwareDevelopment Kit,软件开发工具包)而已,并不繁杂,也不稀奇。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值