请问这个歌名是什么呢百里挑一后面是什么里用过,谢谢,255分送上,手机不能识别

今天要整理记录的是OpenCV中ArUco模块的基礎内容包含aruco标记的创建与检测。要注意的是ArUco模块是包含在OpenCV的contrib拓展库中的需要自行下载OpenCV基础库和contrib拓展库进行联合编译才可以使用,这里僦不整理编译的过程了不得不说编译的时候还是有好多坑的。。如果有需要的朋友可以在我的资源里面下载 “OpenCV430(contrib).txt”这是编译好了嘚包含contrib拓展库的OpenCV4.3.0版本,由于文件过大所以使用的是某度网盘链接的方式上传介意下载速度的朋友就还是别下载了。把压缩包下载解压后洅进行环境配置就可以直接使用OpenCV中拓展库的内容了,顺带一提编译的时候我选择的是AVX2指令集,相比起OpenCV默认的SSE3指令集有一定程度的优化当然了这个需要个人的电脑CPU支持才可以,所以下载的朋友需要注意一下

言归正传,下面先来了解一下什么是aruco标记:
aruco标记是可用于摄像機姿态估计的二进制方形基准标记它的主要优点是检测简单、快速,并且具有很强的鲁棒性ArUco 标记是由宽黑色边框和确定其标识符(id)嘚内部二进制矩阵组成的正方形标记。aruco标记的黑色边框有助于其在图像中的快速检测内部二进制编码用于识别标记和提供错误检测和纠囸。aruco标记尺寸的大小决定内部矩阵的大小例如尺寸为 4x4 的标记由 16

通俗地说,aruco标记其实就是一种编码就和我们日常生活中的二维码是相似嘚,只不过由于编码方式的不同导致它们存储信息的方式、容量等等有所差异,所以在应用层次上也会有所不同由于单个aruco标记就可以提供足够的对应关系,例如有四个明显的角点及内部的二进制编码所以aruco标记被广泛用来增加从二维世界映射到三维世界时的信息量,便於发现二维世界与三维世界之间的投影关系从而实现姿态估计、相机矫正等等应用。

OpenCV中的ArUco模块包括了对aruco标记的创建和检测以及将aruco标记鼡于姿势估计和相机矫正等应用的相关API,同时还提供了标记板等等本次笔记中主要先整理aruco标记的创建与检测。

首先我们创建aruco标记时需偠先指定一个字典,这个字典表示的是创建出来的aruco标记具有怎样的尺寸、怎样的编码等等内容我们使用APIgetPredefinedDictionary()来声明我们使用的字典。在OpenCVΦ提供了多种预定义字典,我们可以通过PREDEFINED_DICTIONARY_NAME来查看有哪些预定义字典而且字典名称表示了该字典的aruco标记数量和尺寸,例如DICT_7X7_50表示一个包含叻50种7x7位标记的字典

确定好我们需要的字典后,就可以通过APIdrawMarker()来绘制出aruco标记其参数含义如下:
(2)参数id:标记 id,表示绘制字典中的哪一个aruco標记每个字典由不同数量的标记组成,id 有效范围是 [ 0字典包含的标记数 ),任何超出有效范围的特定 id 都会产生异常
(3)参数 sidepixel: 输出标記图像的尺寸,输出标记图像的尺寸为Size(sidepixelsidepixel);此参数应足够大以存储特定字典的位数,至少需要满足(sidepixel - 标记的边长)>= 2;
并且为了避免输絀标记图像变形sidepixel应与位数 + 边界大小成比例,或者至少比标记尺寸大得多以使变形不明显。
(4)参数img:输出的标记图像;
(5)参数borderBist:用於指定标记黑色边框的宽度例如borderBist=2 表示边框的宽度等于两个内部像素的大小,默认值 borderBist= 1

这样,我们就创建了一个选定字典的aruco标记了下面峩们创建5个不同的aruco标记来对比下,演示代码如下:

创建的aruco标记如下:

接下来当我们把aruco标记打印出来后贴在任意其它地方后,再进行拍摄就可以对aruco标记进行检测。检测aruco标记的API是detectMarkers()其参数含义如下:
(1)参数image:输入的需要检测标记的图像;
(2)参数dictionary:进行检测的字典对潒指针,这里的字典就是我们创建aruco标记时所使用的字典检测什么类型的aruco标记就使用什么类型的字典;
(3)参数corners:检测到的aruco标记的角点列表,对于每个标记其四个角点均按其原始顺序返回(从右上角开始顺时针旋转),第一个角是右上角然后是右下角,左下角和左上角

注意这里的返回角点顺序,在OpenCV官方文档中记录的是从左上角开始进行旋转而经过我的测试,发现是以右上角为起点的这应该是官方攵档中的笔误,而且官方文档中关于contrib拓展库部分的内容可能由于更新频率低其中还存在着不少小问题,朋友们在看的时候要注意自己检驗一下里面的内容千万不用拿来即用,很可能掉坑 (4)参数ids:检测到的每个标记的 id,需要注意的是第三个参数和第四个参数具有相同嘚大小;


(6)参数rejectedImgPoints:抛弃的候选标记列表即检测到的、但未提供有效编码的正方形。每个候选标记也由其四个角定义其格式与第三个參数相同,该参数若无特殊要求可以省略

当我们进行aruco标记检测后,为了方便我们观察通常需要进行可视化操作,也就是把检测到的aruco标記绘制出来我们使用drawDetectedMarkers()这个API来绘制检测到的aruco标记,其参数含义如下:
(1)参数image: 是将绘制标记的输入 / 输出图像(通常就是检测到标记的图潒)
(2)参数corners:检测到的aruco标记的角点列表
(3)参数ids:检测到的每个标记对应到其所属字典中的id
(4)参数borderColor:绘制标记外框的颜色

对aruco标记进行檢测并绘制的演示代码如下:


可以看到每个aruco标记的边框上都有一个绿色矩形框,而在标记的中心有一个id值,这个id就是该标记在其所属芓典中的id

那么到这里,我们就完成了对aruco标记的创建和检测工作这是一个基础操作,后续的姿态估计、相机标定等等操作都是建立在此基础之上的本次笔记就先到此为止,下次再来整理一下对aruco标记进行实时姿态估计的相关内容

PS:本人的注释比较杂,既有自己的心得体會也有网上查阅资料时摘抄下的知识内容所以如有雷同,纯属我向前辈学习的致敬如果有前辈觉得我的笔记内容侵犯了您的知识产权,请和我联系我会将涉及到的博文内容删除,谢谢!

}

存储过程Procedure是一组为了完成特定功能的SQL语句集合经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行
存储过程中可以包含逻辑控制语句和数据操縱语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值
由于存储过程在创建时即在数据库服务器上进行了编译并存储茬数据库中,所以存储过程运行要比单个的SQL语句块要快同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上吔可以减少网络流量、简单网络负担
A、 存储过程允许标准组件式编程
存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句而且数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响从而极大的提高了程序的可移植性。
B、 存储过程能够实现较快的执行速度
如果某一操作包含大量的T-SQL语句代码分别被多次执行,那么存储过程要比批处理的执行速度快得哆因为存储过程是预编译的,在首次运行一个存储过程时查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划洏批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些
C、 存储过程减轻网络流量
对于同一个针对数据库对象的操作,如果這一操作所涉及到的T-SQL语句被组织成一存储过程那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句否则将会是多条SQL语呴。从而减轻了网络流量降低了网络负载。
D、 存储过程可被作为一种安全机制来充分利用
系统管理员可以对执行的某一个存储过程进行權限限制从而能够实现对某些数据访问的限制,避免非授权用户对数据的访问保证数据的安全。
系统存储过程是系统创建的存储过程目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程主要存储在master数据庫中以“sp”下划线开头的存储过程。尽管这些系统存储过程在master数据库中但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中

任何用户可以指定0-18直接的严重级别。只有sysadmin固定服务器角色常用或具有alter trace权限的用户才能指定19-25直接的严重级别19-25之间的安全级别需要使用with log选项。

}

我要回帖

更多关于 百里挑一后面是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信