机器视觉入门

OpenCV安装配置

  • 进入opencv官网
    点击library点击library,进入其中的releases,选择最新版的包进行下载。(选择好自己电脑对应的版本
  • 下载好之后点击它,会生成一个文件夹
  • 将文件夹放到自己喜欢的路径
  • 环境配置
    右键此电脑点击属性
    在这里插入图片描述
    点击高级系统设置,然后点击环境配置
    在这里插入图片描述
    然后在路径中找到opencv所在位置

计算机视觉所需要的编程基础

计算机视觉所需要的主流编程语言包括 C++ 和 Python

C++
在视觉和图像处理领域,C++ 由于其偏向底层且执行效率高,被广泛使用。使用人数多,网上也有丰富的学习资料。如果是做单纯的图像处理,那么 OpenCV 库的丰富组件以及C++的高效执行效率足以支撑大部分的图像处理问题。然而,当涉及到机器学习以及深度学习的内容时,会发现一方面 C++ 的开发效率实在太低了,另一方面,OpenCV 中虽然也包括了一些简单的统计学习算法的实现,但不够完善。

Python
一方面,在机器学习和深度学习领域,Python 是目前而言应用最为广泛的语言。另一方面,Python 相对来说是一种全能语言,图像处理方面,OpenCV 支持 Python 接口;科学计算方面,Anaconda 提供了丰富的包接口;网络爬虫等应用工具,多数也使用 Python 编写。简而言之,Python 易学易用,且开发效率很高。 想在计算机视觉方向发展的同学,在编程语言方面主要熟悉以上两种语言就可以了。

关于编程语言的学习,不推荐大家看书学习,最关键的事情是要动手练习,网上的教程大同小异,找到一个自己喜欢的,并把大致语法规则学习好,就可以开始上手编写小问题和小项目了。学习的关键在于动手练习,在写代码的过程中,遇到问题,要学会多查阅 Stack Overflow,GitHub 以及各类博客,边学边练。

API

  • 加载图像的API是imread,函数原型是:
Mat imread( const String& filename, int flags = IMREAD_COLOR );`

函数参数含义如下:
(1)const String类型的filename,要加载的图像的文件名,可以包括路径。
(2)int类型的flags,加载图像的方式,默认是IMREAD_COLOR,也就是原图展示。

  • 对于第二个参数,我们有如下不同的可取值:
(1)IMREAD_UNCHANGED:按原样返回加载的图像
(2)IMREAD_GRAYSCALE:将图像转换为单通道灰度图像输出
(3)IMREAD_COLOR:将图像转换为3通道BGR彩色图像
(4)IMREAD_ANYDEPTH:输入具有相应深度时返回16位/32位图像,否则将其转换为8位
(5)IMREAD_ANYCOLOR:以任何可能的颜色格式读取图像
(6)IMREAD_LOAD_GDAL:使用gdal驱动程序加载图像
(7)IMREAD_REDUCED_GRAYSCALE_2:图像转换为单通道灰度图像,图像大小减小1/2
(8)IMREAD_REDUCED_COLOR_2:将图像转换为3通道BGR彩色图像,图像大小减小1/2
(9)IMREAD_REDUCED_GRAYSCALE_4:将图像转换为单通道灰度图像,图像大小减小1/4
(10)IMREAD_REDUCED_COLOR_4:图像转换为3通道BGR彩色图像,图像大小减小1/4
(11)IMREAD_REDUCED_GRAYSCALE_8:将图像转换为单通道灰度图像,图像大小减小1/8
(12)IMREAD_REDUCED_COLOR_8:将图像转换为3通道BGR彩色图像,图像大小减小1/8
(13)IMREAD_IGNORE_ORIENTATION:不要根据EXIF的方向标志旋转图像
  • 创建窗口的API是namedWindow,函数原型是:
void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
  • 函数参数含义如下:
    (1)const String类型的winname,要创建的窗口名称。
    (2)int类型的flags,创建窗口类型,默认是WINDOW_AUTOSIZE,也就是自动尺寸,会根据图像本身的大小来确定窗口的大小。
  • 对于第二个参数,我们有如下不同的可取值:
(1)WINDOW_NORMAL:用户可以调整窗口大小
(2)WINDOW_AUTOSIZE:加载图像大小
(3)WINDOW_OPENGL:支持opengl的窗口
(4)WINDOW_FULLSCREEN:窗口为全屏
(5)WINDOW_FREERATIO:图像尽可能地扩展
(6)WINDOW_KEEPRATIO:尊重图像的比率
(7)WINDOW_GUI_EXPANDED:状态栏和工具栏
(8)WINDOW_GUI_NORMAL:过时的方式
  • 显示图像的API是imshow,函数原型是:
void imshow(const String& winname, InputArray mat);

函数参数含义如下:
(1)const String类型的winname,图像展示的窗口名称。
(2)InputArray类型的mat,要展示的图像。

  • 修改图像的API是cvtColor,函数原型是:
void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );

函数参数含义如下:
(1)InputArray类型的src,输入图像。
(2)OutputArray类型的dst,修改后的图像,图像尺寸和深度与输入图像一致。
(3)int类型的code,图像修改方式,取值于:ColorConversionCodes。
(4)int类型的dstCn,目标图像中的通道数;如果参数为0,通道数将自动从src和code获得。

  • 对于第三个参数,取值于ColorConversionCodes:
    我们发现,这些图像修改方式的格式都是固定的:COLOR_(类型1)2(类型2)
    COLOR我们可以理解为图像色彩的变化,2和to谐音,就是从类型1转化到类型2,最常用的类型主要有如下几个:
    BGR,RGB,BGRA,RGBA:B指的是blue蓝色,G指的是green绿色,R指的是red红色,A指的是alpha通道,表示图像的透明度。
    GRAY:灰度图像。
    HSV:hue saturation value,分别是色调(H),饱和度(S),明度(V)

  • 保存图像的API是imwrite,函数原型是:

bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());

函数参数含义如下:
(1)const String类型的filename,图像输出名称,如果没有路径,就保存在代码同文件夹下。
(2)InputArray类型的img,要输出为文件的图像。
(3)const std::vector,表示特定格式的图像编码。参见cv::ImwriteFlags

  • 对于参数3,具体的类型要参见cv::ImwriteFlags:
    (1)IMWRITE_JPEG_QUALITY:对于JPEG,可以是0到100之间的质量(越高越好)。默认值为95。
    (2)IMWRITE_JPEG_PROGRESSIVE:启用JPEG功能,0或1,默认为False。
    (3)IMWRITE_JPEG_OPTIMIZE:启用JPEG功能,0或1,默认为False。
    (4)IMWRITE_JPEG_RST_INTERVAL:JPEG重新启动间隔,0-65535,默认值为0-不重新启动。
    (5)IMWRITE_JPEG_LUMA_QUALITY:单独的亮度质量等级,0 - 100,默认为0 -不使用。
    (6)IMWRITE_JPEG_CHROMA_QUALITY:单独的色度质量等级,0 - 100,缺省值为0 -不要使用。
    (7)IMWRITE_PNG_COMPRESSION:对于PNG,可以是0到9之间的压缩级别。较高的值意味着较小的大小和较长的压缩时间。如果指定,策略将更改为IMWRITE_PNG_strategy_DEFAULT(Z_DEFAULT_strategy)。默认值为1(最佳速度设置)
    (8)IMWRITE_PNG_STRATEGY:默认为IMWRITE_PNG_STRATEGY_RLE。
    (9)IMWRITE_PNG_BILEVEL:二进制级别PNG,0或1,默认值为0。
    (10)IMWRITE_PXM_BINARY:对于PPM、PGM或PBM,它可以是二进制格式标志0或1。默认值为1。
    (11)IMWRITE_EXR_TYPE:重写EXR存储类型(默认为浮点(FP32))
    (12)IMWRITE_WEBP_QUALITY:对于WEBP,它可以是1到100的质量(越高越好)。默认情况下(不带任何参数),对于质量高于100的情况,使用无损压缩。
    (13)IMWRITE_PAM_TUPLETYPE:对于PAM,将TUPLETYPE字段设置为为格式定义的相应字符串值。
    (14)IMWRITE_TIFF_RESUNIT:对于TIFF,用于指定要设置的DPI分辨率单位;有关有效值,请参阅libtiff文档
    (15)IMWRITE_TIFF_XDPI:对于TIFF,用于指定X方向DPI
    (16)IMWRITE_TIFF_YDPI:对于TIFF,用于指定Y方向DPI。
    (17)IMWRITE_TIFF_COMPRESSION:对于TIFF,用于指定图像压缩方案。有关与压缩格式对应的整数常量,请参见libtiff。注意,对于深度为CV f的图像,仅使用libtiff的SGILOG压缩方案。对于其他支持的深度,可以使用此标志指定压缩方案;默认为LZW压缩。
    (18)IMWRITE_JPEG2000_COMPRESSION_X1000:对于JPEG2000,用于指定目标压缩率(乘以1000)。该值可以从0到1000。默认值为1000。

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

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

相关文章

机器视觉算法(系列一)--机器视觉简短入门

原文链接&#xff1a;点我阅读 欢迎大家关注微信公众号“智能算法”&#xff0c;我们一起学习&#xff0c;共同进步! 机器视觉是 人工智能 正在快速发展的一个分支。机器视觉作为生产过程中关键技术之一&#xff0c;在机器或者生产线上&#xff0c;机器视觉可以检测产品质量以便…

机器视觉详解及入门必看

机器视觉系统具有高效率、高度自动化的特点&#xff0c;可以实现很高的分辨率精度和速度。机器视觉系统与被检测对象无接触&#xff0c;安全可靠。人工检测与机器视觉自动检测的主要区别有&#xff1a; 【系统组成】 一个典型的机器视觉系统包括以下部分&#xff1a; 1.照明 照…

Visio画图自动粘附功能的设置和取消

Visio画图自动粘附功能的设置和取消 在用visio画图&#xff0c;绘制连接线缺省时会自动连接和粘附到图形的连接点&#xff0c;方便了绘制和后续的移动。但对于一些复杂图形&#xff0c;这样的“粘附”又会导致&#xff0c;绘制出来的图形连接线不美观和杂乱。 例如下图&#x…

visio画图记录

标题visio画图记 visio的对齐参考线 拉好参考线后&#xff0c;可以把visio里的线条、方框和参考线对齐 visio的乘法器 乘法器&#xff1a;更多形状&#xff0c;工程&#xff0c;电气工程&#xff0c;基本项中找灯泡2。 visio的加法器 加法器&#xff1a;更多形状&#xff0…

visio画图-去掉visio中多余的连接点

有时候visio保存图片&#xff08;或pdf&#xff09;的时候&#xff0c;无论怎么弄图片&#xff08;或pdf&#xff09;一直会有空白区域。这有可能是因为空白处还有隐藏的东西&#xff0c;比如连接点&#xff0c;删掉多余的连接点就好了。 那么&#xff0c;如何删除visio图中的…

visio画图(保存为pdf,不留空白)

一、visio画图保存为pdf&#xff0c;不留空白&#xff1a; 1&#xff09; https://blog.csdn.net/qq_33783896/article/details/86174579 用Visio画图&#xff0c;保存为pdf&#xff0c;只保存图部分&#xff0c;不含多余空白区域。 2&#xff09;https://blog.csdn.net/man…

VISIO画图笔记

visio画图一些小知识点 画图小技巧1.不要蓝色填充&#xff0c;只有黑色框线的图形2.实现任意两点之间的连线3.连接线的箭头设置4.一键调整所有组织框大小方法5.箭头形状Visio打开或取消箭头的自动吸附和自动连接 画图小技巧 1.不要蓝色填充&#xff0c;只有黑色框线的图形 选…

Visio画图删去四周白边

Visio画图删去四周白边 &#xff08;1&#xff09;菜单栏选择“开发工具”&#xff0c;然后选择“显示ShapeSheet”&#xff0c;选择弹出的第二项“页&#xff08;P&#xff09;” &#xff08;2&#xff09;弹出部分如红框所示 &#xff08;3&#xff09;下拉找到“Print P…

visio画图操作合集

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、绘制水平线条二、如何将visio画的图导入到word或wps中 前言 visio画图的一些基本操作、常用技巧&#xff0c;会逐步添加内容&#xff0c;一点点完善起来。…

VISIO绘图技巧

使用VISIO绘制网络拓朴图 任务描述 根据给定的草图使用VISIO绘制网络拓朴图 能力目标 掌握网络拓朴图绘制能力 方法与步骤 1、启动Visio软件。 2、熟悉Visio软件界面操作。 3、用Visio软件绘制网络拓扑结构图 步骤1&#xff0e;启动Visio&#xff0c;选择Network目录下…

无涯教程-Perl - msgsnd函数

描述 此功能使用可选的FLAGS将消息MSG发送到消息队列ID。 语法 以下是此函数的简单语法- msgsnd ID, MSG, FLAGS返回值 该函数在错误时返回0,在成功时返回1。 Perl 中的 msgsnd函数 - 无涯教程网无涯教程网提供描述此功能使用可选的FLAGS将消息MSG发送到消息队列ID。 语法…

Java实现人民币大写

创建ConvertMoney类&#xff0c;主方法接受用户输入的金额&#xff0c;然后通过convert()方法把金额转换大写格式的字符串格式&#xff0c;并输出到控制台。 public static void main (String[] args){ Scanner scan new Scanner(System.in); //创建扫描器 System.out.printl…

将阿拉伯数字转化成大写的人民币数字

将阿拉伯数字转化成大写的人民币数字 public String getNumberToRMB(String m) ... { String num "零壹贰叁肆伍陆柒捌玖"; String dw "圆拾佰仟万亿"; String mm[] null; mm m.split("/."); String money mm[0]; Strin…

高清视频跟踪及实现

高性能高清视频跟踪器&#xff0c;采用“样本-训练-检测”的多尺度自学习跟踪算法&#xff0c;很好地解决了场景运动、目标的非刚性运动、遮挡和自遮挡、弱小及噪声等恶劣等环境下的目标跟踪鲁棒性问题&#xff0c;使得对各种目标的跟踪更加可靠稳定。模块集成了多种目标检测算…

mysql 如何跟踪_MySQL如何跟踪sql语句

在项目开发中&#xff0c;难免会遇到在数据库服务器端跟踪sql执行语句的需求&#xff0c;通过跟踪sql执行语句&#xff0c;我们可以确定当上层应用在执行sql语句时 在项目开发中&#xff0c;&#xff0c;难免会遇到在数据库服务器端跟踪sql执行语句的需求&#xff0c;通过跟踪s…

【目标跟踪】|STARK

本文使用transformer集成时间上下文信息 通过更新输入的动态模板&#xff08;文中设置200帧&#xff09;&#xff0c;获得时间上下文信息&#xff0c;再利用transformer进行处理 transformer 本身对空间上下文具有更好的建模能力 新架构包含三个关键组件&#xff1a;编码器、解…

漫话拥塞控制:BBR 是个单流模型

概要(便于检索主题)&#xff1a;单流&#xff0c;多流收敛&#xff0c;probe buffer 挤压带宽&#xff0c;maxbw-filter wnd。 我曾经经常说 BBR 是个单流模型&#xff0c;而不是多流收敛模型&#xff0c;也做过不少评论&#xff0c;最近在复听 IETF 的大会&#xff0c;在 IET…

2023年中国HPV宫颈癌疫苗需求量、竞争格局、市场规模及行业细分产品规模分析[图]

HPV宫颈癌疫苗也是人乳头瘤病毒疫苗&#xff0c;由重组表达的HPV主要衣壳蛋白L1病毒样颗粒制备而成&#xff0c;可以预防由HPV感染及其引起的各种疾病&#xff0c;包括宫颈癌、阴道癌、肛门癌和口咽癌等癌症&#xff0c;及相关癌前病变。 目前中国在售的HPV疫苗包括万泰生物的二…

2023年中国日志审计市场竞争格局、市场规模、下游应用领域及行业发展趋势[图]

日志是行为或状态详细描述的载体&#xff0c;其时效性与信息丰富程度在网络安全事件分析、事件回溯和取证过程中起到重要作用。在法律层&#xff0c;日志也是重要的电子证据&#xff0c;日志记录、监控、审计手段等&#xff0c;可以帮助有效地减少信息破坏、信息泄露的问题&…