两图像间的像素操作

cv::bitwise_and() 函数原型

 //像素求“与”运算CV_EXPORTS_W void bitwise_and(InputArray src1,InputArray src2,OutputArray dst,InputArray mask = noArray());

cv::bitwise_or() 函数原型

 //像素求“或“运算CV_EXPORTS_W void bitwise_or(InputArray src1,InputArray src2,OutputArray dst,InputArray mask = noArray());

cv::bitwise_xor() 函数原型

 //像素求“异或”运算CV_EXPORTS_W void bitwise_xor(InputArray src1,InputArray src2,OutputArray dst,InputArray mask = noArray());

cv::bitwise_not() 函数原型

 //像素求“非”运算CV_EXPORTS_W void bitwise_not(InputArray src,OutputArray dst,InputArray mask = noArray());

src1:第一个图像矩阵,可以是多通道图像数据
src2:第二个图像矩阵,尺寸、通道数和数据类型都需要与 src1 一致
dst:逻辑运算输出结果,尺寸、通道数和数据类型都需要与 src1 一致
mask:掩模,用于设置图像或矩阵中逻辑运算的范围

  • 这4个函数都执行相应的逻辑运算,在进行逻辑运算时,一定要保证两个图像矩阵之间的尺寸、数据类型和通道数相同,多个通道进行逻辑运算时不同通道之间是独立进行的。

pointPolygonTest

cv::pointPolygonTest 函数原型

 CV_EXPORTS_W double pointPolygonTest(InputArray contour, //输入的轮廓Point2f pt, //需要计算与轮廓距离的像素点bool measureDist //计算的距离是否具有方向性的标志。当参数取值为 true 时,点在轮廓内部时,距离为正,点在轮廓外部时,距离为负;当参数取值为 false 时,只检测点是否在轮廓内。);

该函数能够计算指定像素点距离轮廓的最小距离并以 double 类型的数据返回。

  • 该函数的第一个参数表示轮廓,数据类型是 vector 或者 Mat。
  • 该函数的第二个参数是需要计算与轮廓距离的像素点坐标。
  • 该函数的第三个参数是计算的距离是否具有方向性的标志,false 表示输出结果不具有方向性,只判断像素点与轮廓之间的位置关系,如果像素点在轮廓的内部,返回值为1,如果像素点在轮廓的边缘上,返回值为0,如果像素点在轮廓的外部,返回值为-1。 true 表示输出结果具有方向性,如果像素点在轮廓内部,返回值为正数,如果像素点在轮廓外部,返回值为负数。

形态学应用

如何利用不同顺序的图像腐蚀和膨胀实现图像的开运算、闭运算、形态学梯度、顶帽运算、黑帽运算,以及击中击不中变换等操作。

cv::morphologyEx() 函数原型

 CV_EXPORTS_W void morphologyEx(InputArray src, //输入图像,图像的通道数可以是任意的,但图像的数据类型必须是 CV_8U、CV_16U、CV_16S、CV_32F、CV_64F 之一OutputArray dst, //形态学操作后的输出图像,与输入图像具有相同的尺寸和数据类型int op, //形态学操作类型的标志,可以选择的标志及其含义下方给出InputArray kernel, //结果元素,可以自己生成,也可以用 getStructuringElement 函数生成Point anchor = Point(-1,-1), //中心点在结构元素中的位置,默认参数为结构元素的几何中心点。int iterations = 1, //处理的次数int borderType = BORDER_CONSTANT, //像素外推法选择标志const Scalar& borderValue = morphologyDefaultBorderValue() //表示不包含外推法时的边界值);

该函数根据结构袁术对输入图像进行多种形态学操作,在处理多通道图像时,每个通道独立进行处理。

  • 该函数的第一个参数为待形态学处理的图像。
  • 该函数的第二个参数是形态学输出图像,与输入图像具有相同的尺寸和数据类型。
  • 该函数的第三个参数是形态学操作类型的选择标志,可以选择的形态学操作类型有开运算、闭运算、形态学梯度、顶帽运算、黑帽运算,以及击中击不中变换。
  • 该函数的第四个、第五个参数都是与结果元素相关的参数,第四个参数为结构元素,使用的结构元素尺寸越大,效果越明显,第四个参数为结构元素的中心位置,第五个参数的默认值为 Point(-1, -1),表示结构元素的几何中心处为结构元素的中心点。
  • 该函数的第六个参数是使用结构元素处理的次数,处理次数越多,效果越明显。
  • 该函数的第七个参数是图像像素外推法选择标志,第八个参数为使用边界不变外推法时的边界值,这两个参数对于图像中主要部分的形态学操作没有影响,因此在多数情况下使用默认值即可。
 MORPH_ERODE    = 0, //图像腐蚀MORPH_DILATE   = 1, //图像膨胀MORPH_OPEN     = 2, //开运算MORPH_CLOSE    = 3, //闭运算MORPH_GRADIENT = 4, //形态学梯度MORPH_TOPHAT   = 5, //顶帽运算MORPH_BLACKHAT = 6, //黑帽运算MORPH_HITMISS  = 7  //击中击不中运算

图像形态学腐蚀可以将细小的噪声区域去除,膨胀则反之,相当好理解,重点说明区域的击中形态学运算

开运算

图像开运算可以去除图像中的噪点,消除较小连通域,保留较大连通域,同时能够在两个物体纤细的连接处将两个物体分离,并且在不明显改变较大连通域面积的同时能够平滑连通域的边界。
开运算是图像腐蚀和膨胀的结合,首先对图像进行腐蚀,消除图像中噪声和较小的连通域,之后通过膨胀算法弥补较大连通域因腐蚀而造成的面积较小。

闭运算

图像闭运算可以去除连通域内的小型空间,平滑物体轮廓,连接两个临近的连通域。
闭运算是图像腐蚀和膨胀操作的结合,首先对图像进行膨胀,填充连通域内的小型空洞,扩大连通域的边界,将临近的两个连通域连接,之后通过腐蚀运算减少由膨胀运算引起的连通域边界的扩大以及面积的增加。

形态学梯度

形态学梯度能够描述目标的边界,根据图像腐蚀和膨胀与原图之间的关系计算得到,形态学梯度可以分为基本梯度、内部梯度和外部梯度。
基本梯度是原图像膨胀后图像与腐蚀后图像间的差值图像,内部梯度图像是原图像与腐蚀后图像间的差值图像,外部梯度是膨胀后图像与原图像间的差值图像。

顶帽运算

图像顶帽运算是原图像与开运算结果之间的差值,往往用来分离比临近点亮一些的斑块,因为开运算带来的效果是放大了裂缝或者局部低亮度的区域,因此,从原图中国减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域。
顶帽运算先对图像进行开运算,之后从原图像中减去开运算计算的结果。

黑帽运算

图像黑帽运算是与图像顶帽运算相对应的形态学操作。与顶帽运算不同,黑帽运算是原图像与顶帽运算结果之间的差值,往往用来分离比临近点暗一些的斑块。
黑帽运算先对图像进行闭运算,之后从闭运算结果中减去原图像。

击中击不中变换

击中击不中变换是比图像腐蚀要求更加岢刻的一种形态学操作,图像腐蚀只需要图像能够将结构元素中所有非零元素包含,但是击中击不中变换要求原图像中需要存在与结构元素一模一样的结构,即结构元素中非零元素也需要同时被考虑。

OpenCV 常用函数汇总(bitwise_*、pointPolygonTest、morphologyEx)相关推荐

  1. 干货|219个opencv常用函数汇总

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨AmosLLc 来源丨新机器视觉      作者为CSDN博主「AmosLLc」 原文链接:https: ...

  2. 219个opencv常用函数汇总

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 1.cvLoadImage:将图像文件加载至内 ...

  3. OpenCV 常用函数汇总(normalize、getStructuringElement、erode、dilate)

    简单认知 Mat 认知 取值类型和范围 CV_8U 8位无符号整数 0~255 CV_8S 8位符号整数 -128~127 CV_16U 16位无符号整数 0~65535 CV_16S 16位符号整数 ...

  4. Opencv的使用小教程1——Opencv基础函数汇总

    Opencv的使用小教程1--Opencv基础函数汇总 1.VideoCapture 2.imread 3.resize 4.clone 5.cvtColor 6.Scalar 7.获取像素点的值 8 ...

  5. matlab常用函数汇总

    matlab常用函数汇总 1.特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 inputname 输入参数名 NaN ...

  6. Oracle常用函数汇总记录

    Oracle常用函数汇总记录 一.SUBSTR 截取函数 用法:substr(字符串,截取开始位置,截取长度) //返回截取的字, 字符串的起始位置为1,截取时包含起始位置字符 1.SUBSTR( & ...

  7. opencv常用函数整理

    opencv常用函数整理 一.常见函数整理 1.1 cv2.resize函数(图像size重定义) 1.2 cv2.getStructuringElement函数(构造卷积核) 1.3.cv2.put ...

  8. OpenCV | OpenCv常用函数(代码类)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 俗语云:好记性不如烂笔头 //用到 ...

  9. Hive内置函数与常用函数汇总

    目录 Hive内置函数汇总 字符函数(字符串操作) 数学函数 集合函数 类型转换函数 日期函数 条件函数 聚合函数 表生成函数 辅助功能类函数 数据屏蔽函数(从Hive 2.1.0开始) Hive常用 ...

最新文章

  1. 3.7 感知器-机器学习笔记-斯坦福吴恩达教授
  2. jfinal上传图片,生成日期文件夹,图片重命名
  3. python编程入门与案例详解-清华大学出版社-图书详情-《Python编程入门与案例详解》...
  4. MySQL 安装 [mysql-5.6.37]
  5. 求1+2+3+...+n(剑指 Offer 64)
  6. CRM客户关系管理系统
  7. 总结:86版五笔输入法
  8. Mac开发-脚本打包DMG
  9. python下载urllib3_使用urllib3下载网页
  10. 1400——507B、1370C、1363B、1324D、1365C、1374D
  11. 一、windows安装docker
  12. linux rs,Linux中的RS, ORS, FS, OFS
  13. 6m缓存和8m缓存差距_全能工具箱一款专门为安卓设备研发的综合型系统管理工具。实时内存、进程清理、缓存清理、SD卡文件管理、历史记录清除、开机项管理!...
  14. 什么办法能让鹅长头包 鹅什么药头上头瘤长得快
  15. csv文档转为tsv文档-csv to tsv
  16. VSCode 代码格式化的快捷键
  17. Linux || 查询类命令
  18. 大数据学习——Flume入门
  19. Systrace分析基础知识
  20. windows下的docker学习

热门文章

  1. python labelImg xml 格式的数据集解析及可视化
  2. plt 固定X轴、Y轴的范围 ax设置横纵坐标的范围 ax.set_ylim(ymin = 0, ymax = 130)ax.set_xlim(xmin = -5, xmax = 5)
  3. 五种方法教你永久关闭win10自动更新
  4. 北京区块链技术应用协会第一届第四次会员大会顺利召开
  5. 分分钟安装VMware,并安装linux操作系统
  6. 图像处理算法工程师必备技能总结
  7. NetFPGA-SUME中Ubuntu环境使用Vivado的相关问题
  8. 运用滤波反投影的方法对图像进行重建matlab仿真
  9. SQL 模拟生成商品订单表
  10. 五子棋-单机游戏-微信小游戏项目开发入门