01-概述 - OpenCV介绍与环境搭建

news2024/10/5 13:52:54

目录

1、OpenCV概念

(1)OpenCV 的介绍

(2)图像处理(Image Processing)

(3)OpenCV的架构和核心模块

2、开发环境搭建

3、代码与演示


1、OpenCV概念

(1)OpenCV 的介绍

 OpenCV是计算机视觉开源库,主要算法涉及图像处理和机器学习相关方法;

        OpenCV 的全称是 Open Source Computer Vision Library , 直译就是“开源计算机视觉库”。取代表开源的单词“Open”、“Computer ” 的首字母“C” 以及“ Vision ”的首字母“V”,组合命名为 OpenCV

        OpenCV(open source computer vision library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上,能够快速的实现一些图像处理和识别的任务。 

        它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

        OpenCV 还提供 MLL ( Machine Learning Library ) 机器学习库。该机器学习库主要用于统计方面的模式识别和聚类( clustering )。

(2)图像处理(Image Processing)

        图像处理:是用计算机对图像进行分析, 以达到所需结果的技术, 又称影像处理。

        图像处理技术一般包括图像压缩, 增强和复原, 匹配、描述和识别 3 个部分。

        图像处理一般指数字图像处理( Digital Image Processing )。其中, 数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组。该数组的元素称为像素,其值称为灰度值。而数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。

(3)OpenCV的架构和核心模块

核心模块:(最主要是2和3)

        1)HighGUI部分:简称 highgui

        高层 GUI 图形用户界面,可用于处理所有高级用户界面操作,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。

         它有一个等待功能,可以等你按下键盘上的一个键才进入下一步。还有一个可以检测鼠标事件的功能,在开发交互式应用程序时非常有用。

        2)Image Process:简称 imgproc

        图像处理模块。包含如下内容:
        线性和非线性的图像滤波、图像的几何变换、其他图像转换、直方图相关、结构分析和形状描述、运动分析和对象跟踪、特征检测、目标检测等内容
        可以执行诸如图像过滤、形态学操作、几何变换、颜色转换、图像绘制、直方图、形状分析、运动分析、特征检测等操作。

        3)2D Features:简称 featurn2d

        人类视觉系统倾向于从给定场景中提取主要特征,然后记住它,这样便于后续的检索。为了模仿这一点,人们开 始设计各种特征提取器,用于从给定的图像中提取出这些特征点。

        4)Camera Calibration and 3D reconstruction:简称 calib3d

       这个模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法、3D 信息的重建等。

        5)Video Analysis:简称 video

        视频分析包括诸如分析视频中连续帧之间的运动、跟踪视频中的不同目标、创建视频监控模型等任务。该模块包括运动估计、背景分离、对象跟踪等视频处理相关内容。

        6)Object Detecyion:简称 objdetec

        目标检测模块,包含 Cascade Classification (级联分类)和 Latent SVM 这两个部分。对象检测是指检测给定图像中对象的位置。此过程与对象类型无关。

         如果你设计一个椅子检测器,它不会告诉你给定图像中的椅子是高靠背红色的,还是蓝色低靠背的,它只会告诉你椅子的位置。

        7)Machine Learning:简称 ml

        机器学习模块,基本上是统计模型和分类算法,包含如下内容:

        统计模型( Statistical Models)、 一般贝叶斯分类器(Normal Bayes Classifier)、 K-近邻(K-Nearest Neighbors) 、支持向量机(Support Vector Machines) 、决策树(DecisionTrees)、 提升(Boosting) 、梯度提高树(Gradient Boosted Trees) 、随机树(Random Trees) 、超随机树(Extremely randomized trees) 、期望最大化(Expectation Maximization)、 神经网络(Neural Networks)

        MLData 它还有一个名为快速近似最近邻搜索库(Fast Approximate Nearest Neighbor Search Library,简称 FLANN)的模块,其中包含用于在大型数据集中进行快速最近邻搜索的算法。

        8)GPU加速

        需要付费就会加速。

2、开发环境搭建

(1)下载VS对应版本

(2)OpenCV3.1.0,或者按需下载版本

        下载好对应的版本,直接解压到目标路径即可

(3)配置环境变量和在VS中引入头文件、库文件、链接库

添加环境变量,前面注意加;号

;D:\WorkSpace\OpenCV\opencv\build\bin

头文件:include

D:\WorkSpace\OpenCV\opencv\build\include

D:\WorkSpace\OpenCV\opencv\build\include\opencv

D:\WorkSpace\OpenCV\opencv\build\include\opencv2

库文件:lib

D:\WorkSpace\OpenCV\opencv\build\x64\vc14\lib

链接器 —— 输入

opencv_world310d.lib

        1)编辑配置环境变量

        2)VS中引入头文件、库文件、链接库

打开VS的项目属性:

3、代码与演示

加载一张图片,并显示出来。

成功加载后,也证明环境的搭建是成功的。

#include<opencv2\opencv.hpp>
#include<iostream>
 
using namespace cv;
int main(int argc, char** argv)
{
    // 加载图像
	Mat src = imread("test.jpg");
	if (src.empty())
	{
		printf("could not load image...\n");
		return -1;
	}
    
    // 创建窗口
	namedWindow("test opencv setup", CV_WINDOW_AUTOSIZE);

    // 显示图像
	imshow("test opencv setup", src);

    // 等待按键
	waitKey(0);

    // 关闭窗口
    destroyAllWindows();

	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1246976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIA-RS基础-静态路由协议

摘要&#xff1a;静态路由是一种在网络中广泛应用的路由选择方案&#xff0c;它以其简单的配置和低开销而备受青睐。本文将介绍静态路由的配置方法、默认路由的设置、路由的负载分担和备份策略。通过学习本文&#xff0c;希望可以你能够掌握静态路由的基本概念和在华为模拟器中…

Flutter之Graphic图表的简单示例

简介 Graphic是一个数据可视化语法和Flutter图表库。 官方github示例 我的gitee示例 网上可用资源很少&#xff0c;只有作者的几篇文章&#xff0c;并且没有特别详细的文档&#xff0c;使用的话还是需要一定的时间去调研&#xff0c;在此简单记录。 示例 以折线图为例&…

传输层协议[精选]

网络: 跨主机通信. 互联网通信: 两点之间的通信路径有无数条. 集线器: 把一根网线差出来两根,但是同一时刻只能有一根线跑.交换机: 组建局域网.路由器: 本质就是将两个局域网连接起来 交换机和路由器之间的区别越来越模糊. 调制解调器: 使用电话线上网的时候,需要将电话线的模…

数据资源和数据资产的区别是什么?

数据资源&#xff1a;狭义的数据资源是指数据本身&#xff0c;即企业运作中积累下来的各种各样的数据记录&#xff0c;如客户记录、销售记录、人事记录、采购记录、财务数据和库存数据等。广义的数据资源涉及数据的产生、处理、传播、交换的整个过程&#xff0c;包括数据本身、…

【matlab程序】matlab给风速添加图例大小

【matlab程序】matlab给风速添加图例大小 clear;clc;close all; % load 加载风速数据。 load(matlab.mat) % 加载颜色包信息 gray load(D:\matlab_work\函数名为colormore的颜色索引表制作\R_color_txt\R_color_single\gray89.txt); brown load(D:\matlab_work\函数名为color…

electron+vue3全家桶+vite项目搭建【26】electron本地安装Vue Devtool插件,安装浏览器扩展

文章目录 引入获取vue devtool导入插件排除插件的npm脚本最终效果 引入 demo项目地址 Vue Devtools插件是vue项目必备插件&#xff0c;它是安装在浏览器里的&#xff0c;而咱们的electron中实际就包含了一个浏览器&#xff0c;同理它也可以加载浏览器插件 获取vue devtool 直…

一键创新 | 拓世法宝AI智能直播一体机激发房产自媒体创造力

在数字化时代&#xff0c;房产销售已然不再是传统的模式。随着社交媒体和自媒体的兴起&#xff0c;短视频直播成为房产自媒体营销的新风口。然而&#xff0c;行业也面临着诸多挑战&#xff0c;如何更好地利用新媒体拓展市场&#xff0c;提升自媒体效果成为摆在业内人士面前的难…

【网络奇幻之旅】那年我与区块链技术的邂逅

&#x1f33a;个人主页&#xff1a;Dawn黎明开始 &#x1f380;系列专栏&#xff1a;网络奇幻之旅 ⭐每日一句&#xff1a;追光的人&#xff0c;终会光芒万丈 &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️ 文章目录 &#…

锂电池搅拌机常见故障及预测性维护解决方案

锂电池搅拌机作为锂电池生产过程中的关键设备&#xff0c;负责混合和搅拌材料&#xff0c;对生产效率和产品质量具有重要影响。但由于长时间运行和复杂工作环境&#xff0c;锂电池搅拌机常常面临各种故障和维护需求。传统的故障修复维护方式往往是被动的&#xff0c;不能及时预…

【Spring集成MyBatis】动态sql

文章目录 1. 什么是动态sql2. 动态sql之<if>3. 动态sql之<where>4. 动态sql之<foreach>5. sql片段抽取 此篇的代码基于 【Spring集成MyBatis】MyBatis的Dao层实现&#xff08;基于配置&#xff0c;非注解开发&#xff09;续写 1. 什么是动态sql MyBatis映射…

PCB百强企业泰和电路牵手盘古信息,IMS助力泰和智能工厂加“数”前行

随着制造业数字化转型的深入推进&#xff0c;建设数字化智能工厂正日渐成为企业数智化战略的必要举措。为提高生产效率、降低生产成本&#xff0c;为客户提供更优质的产品和服务&#xff0c;中国电子电路百强企业——泰和电路科技&#xff08;珠海&#xff09;有限公司&#xf…

一个令人惊艳的新项目,SVD开源了!

大家好&#xff0c;我是 Jack。 对于 Stable Diffusion&#xff0c;想必我的读者朋友们对此都不陌生。 自 Stability AI 公司发布 SD&#xff08;全称&#xff1a;Stable Diffusion) 以来&#xff0c;受到了很多人的喜爱。 SDXL 效果 随后技术升级&#xff0c;又发布了 SDXL…

mysql查询表的字段,字段名以及注释sql语句

sql语句如下&#xff1a; selecta.ordinal_position 序号,a.COLUMN_name 字段名,a.COLUMN_type 字段类型,(case a.is_nullable when NO then 是 else 否 end) 是否非空,(case a.column_key when PRI then 是 else 否 end) 是否主键,a.COLumn_comment 注释 frominformation_sch…

PSP - 蛋白质真实长序列查找 PDB 结构短序列的算法

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/134599076 在蛋白质结构预测的过程中&#xff0c;输入一般是蛋白质序列(长序列)&#xff0c;预测出 PDB 三维结构&#xff0c;再和 Ground Truth …

2024深圳电子展,加快粤港澳电子信息发展,重点打造“湾区经济”

在“十四五”期间&#xff0c;中国电子信息产业面临着新形势和新特点。随着国家对5G、人工智能、工业互联网、物联网等“新基建”的加速推进&#xff0c;以及形成“双循环”新格局的形势&#xff0c;新型显示、集成电路等产业正在加速向国内转移。这一过程不仅带来了新的应用前…

日常生活小技巧 -- Win10 系统安装 Linux 子系统

最新要在win10系统安装linux子系统&#xff0c;看一下教程。 参看&#xff1a;Win10 系统安装 Linux 子系统教程(WSL2 Ubuntu 20.04 Gnome 桌面 &#xff09; 1、开启开发人员模式 2、适用于linux的Windows子系统 勾选下图三个选项&#xff0c;重启。 3、安装 Ubuntu 创建…

centos系统下,docker安装sqlserver并用本地Navicat连接

文章目录 一&#xff0c;centos下安装docker二&#xff0c;docker安装sqlserver20192.1 安装遇到的问题2.1.1 修改用户名进不去数据库2.1.2 安装2022版的sqlserver发现启动失败 三&#xff0c;Navicat连接centos下的sqlserver3.1 下载ODBC Driver 参考微软网址&#xff1a; 使…

ELK企业级日志分析平台——elasticsearch

集群部署 文档&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/7.6/index.html 下载&#xff1a;https://elasticsearch.cn/download/ 主机 ip 角色 k8s1 192.168.92.11 cerebro elk1 192.168.92.31 elasticsearch elk2 192.168.92.32 elasti…

U9二次开发之轻量服务项目开发

最近公司要开发一个下载图纸的U9轻量级接口&#xff0c;轻量级接口就是restful api&#xff0c;可以直接通过get、post等方式调用&#xff0c;参数的传送和结果的返回都使用JSON格式&#xff0c;用起来比Webservice接口爽多了。 如果是开发新的接口&#xff0c;我建议都用轻量…

java springboot测试类虚拟MVC环境 匹配返回值与预期内容是否相同 (JSON数据格式) 版

上文java springboot测试类鉴定虚拟MVC请求 返回内容与预期值是否相同我们讲了测试类中 虚拟MVC发送请求 匹配返回内容是否与预期值相同 但是 让我意外的是 既然没人骂我 因为我们实际开发 返回的基本都是json数据 字符串的接口场景是少数的 我们在java文件目录下创建一个 dom…