【youcans 的 OpenCV 例程200篇】132. 形态学重建之孔洞填充算法

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中


【youcans 的 OpenCV 例程200篇】132. 形态学重建之孔洞填充算法

4. 形态学图像重建

形态学重建的核心是测地膨胀和测地腐蚀。

图像的形态学重建涉及两幅图像和一个结构元:图像 F 是标记,包含重建的起点;图像 G 是模板,用来约束重建;结构元 B 定义连通性,通常是全 1 的 3*3 陈列。

在二值图像中,测地腐蚀或测地膨胀是将腐蚀或膨胀结果与模板图像 G 进行交集运算(与)或并集运算(或),在灰度图像中的推广则是以求最大值、最小值来取代二值的与或操作。

简单地说,测地膨胀和测地腐蚀就是有条件的膨胀和腐蚀。膨胀或腐蚀结果与模板图像进行交集或并集运算,从而对膨胀或腐蚀操作施加了特定的约束。


4.3 形态学孔洞填充

对于二值图像 I(x,y)I(x,y)I(x,y),开发一种基于形态学重建的填充孔洞的算法:

使用原图像的补集 IcI^cIc 作为模板,构造一幅标记图像 F。

标记图像 F 的边框位置为 1−I1-I1I,其它位置均为 0(白色),即:
F(x,y)={1−I(x,y),(x,y)在边界上0,其它F(x,y) = \begin{cases} 1 - I(x,y) &, (x,y)在边界上\\ 0 &, 其它 \end{cases} F(x,y)={1I(x,y)0,(x,y),
于是,H=[RIcD(F)]cH=[R^D_{I^c}(F)]^cH=[RIcD(F)]c 是一幅由图像 I(x,y)I(x,y)I(x,y)重建的,所有孔洞都被填充的二值图像。

基于形态学重建的孔洞填充,首先构造包含孔洞的二值图像 I(x,y)I(x,y)I(x,y) 及其补集 IcI^cIc。使用补集 IcI^cIc 作为与操作的掩模模板,可以保护迭代期间所有的前景像素不会被改变。

图像的背景为黑色(值为 1),孔洞被白色前景像素(值为 0)包围,即在孔洞周围建立了一道由 0 组成的围墙。标记图像 F 有一个元素为 1 的边界(除 I=1I=1I=1的位置外),因此黑色从边界开始向内不断膨胀,但不能突破孔洞周围的围墙。最终将填满除孔洞周围之外的全部图像,对其求补后就可以得到孔洞填充的图像。



例程 10.22:基于形态学重建的孔洞填充算法

本例是基于重建开运算的提取带有孔洞字符的图像恢复。
(1)构造标记图像 F 作为膨胀重建的标记,标记图像的边框位置为 1−I1-I1I,其它位置均为 0;
(2)使用十字形结构元( MORPH_CROSS),对标记图像 F 进行膨胀恢复;
(3)用原图像的补集作为模板来约束重建,与膨胀恢复图像进行逻辑与;
(4)重复图像 F 的重构运算,直到达到稳定收敛状态;
(5)对收敛的标记图像 F 求补,得到孔洞填充的重建结果。

    # 10.22:基于形态学重建的填充孔洞自动算法imgGray = cv2.imread("../images/Fig0931a.tif", flags=0)  # flags=0 灰度图像ret, imgBinInv = cv2.threshold(imgGray, 205, 255, cv2.THRESH_BINARY_INV)  # 二值化处理 (黑色0/白色1)imgBin = cv2.bitwise_not(imgBinInv)  # 二值图像的补集 (白色背景)# 构造标记图像:marker = np.zeros_like(imgBin, dtype=np.uint8)marker[0, :] = 255 - imgBin[0, :]marker[-1, :] = 255 - imgBin[-1, :]marker[:, 0] = 255 - imgBin[:, 0]marker[:, -1] = 255 - imgBin[:, -1]markerIni = marker.copy()  # 标记图像: 边框 f(x,y)=1-I(x,y),其它为 0# 形态学重建element = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))while True:marker_pre = marker  # 保存 F(n-1)dilation = cv2.dilate(marker, kernel=element)  # 膨胀重建marker = cv2.bitwise_and(dilation, imgBinInv)  # 原图像的补集作为模板用来约束重建,按位与,有 0 得 0if (marker_pre == marker).all():  # F(n)=F(n-1)?,判断是否达到稳定收敛状态breakimgRebuild = cv2.bitwise_not(marker)  # 对收敛的 marker 求补得到孔洞填充的重建结果# 显示plt.figure(figsize=(9, 6))plt.subplot(221), plt.imshow(imgGray, cmap='gray'), plt.title("origin image"), plt.axis("off")plt.subplot(222), plt.imshow(imgBinInv, cmap='gray'), plt.title("inverted image"), plt.axis("off")plt.subplot(223), plt.imshow(marker, cmap='gray'), plt.title("final marker"), plt.axis("off")plt.subplot(224), plt.imshow(imgRebuild, cmap='gray'), plt.title("rebuild image"), plt.axis("off")plt.tight_layout()plt.show()

在这里插入图片描述

程序说明:

例程实现了孔洞填充的效果,但也有少数带有孔洞的字符并没有被识别和填充(注意观察最后两行)。这是由于印刷质量的原因,图像中部分字符存在微小的断裂,导致孔洞不连续,因此没有得到正确的识别和填充。
要解决这个问题,可以先用图像闭运算弥合断裂,以减少由于印刷导致字符存在的细小缝隙。


(本节完)


版权声明:

youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/123526854)

Copyright 2022 youcans, XUPT
Crated:2022-3-18


欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中

【youcans 的 OpenCV 例程200篇】01. 图像的读取(cv2.imread)
【youcans 的 OpenCV 例程200篇】02. 图像的保存(cv2.imwrite)
【youcans 的 OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
【youcans 的 OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
【youcans 的 OpenCV 例程200篇】05. 图像的属性(np.shape)
【youcans 的 OpenCV 例程200篇】06. 像素的编辑(img.itemset)
【youcans 的 OpenCV 例程200篇】07. 图像的创建(np.zeros)
【youcans 的 OpenCV 例程200篇】08. 图像的复制(np.copy)
【youcans 的 OpenCV 例程200篇】09. 图像的裁剪(cv2.selectROI)
【youcans 的 OpenCV 例程200篇】10. 图像的拼接(np.hstack)
【youcans 的 OpenCV 例程200篇】11. 图像通道的拆分(cv2.split)
【youcans 的 OpenCV 例程200篇】12. 图像通道的合并(cv2.merge)
【youcans 的 OpenCV 例程200篇】13. 图像的加法运算(cv2.add)
【youcans 的 OpenCV 例程200篇】14. 图像与标量相加(cv2.add)
【youcans 的 OpenCV 例程200篇】15. 图像的加权加法(cv2.addWeight)
【youcans 的 OpenCV 例程200篇】16. 不同尺寸的图像加法
【youcans 的 OpenCV 例程200篇】17. 两张图像的渐变切换
【youcans 的 OpenCV 例程200篇】18. 图像的掩模加法
【youcans 的 OpenCV 例程200篇】19. 图像的圆形遮罩
【youcans 的 OpenCV 例程200篇】20. 图像的按位运算
【youcans 的 OpenCV 例程200篇】21. 图像的叠加
【youcans 的 OpenCV 例程200篇】22. 图像添加非中文文字
【youcans 的 OpenCV 例程200篇】23. 图像添加中文文字
【youcans 的 OpenCV 例程200篇】24. 图像的仿射变换
【youcans 的 OpenCV 例程200篇】25. 图像的平移
【youcans 的 OpenCV 例程200篇】26. 图像的旋转(以原点为中心)
【youcans 的 OpenCV 例程200篇】27. 图像的旋转(以任意点为中心)
【youcans 的 OpenCV 例程200篇】28. 图像的旋转(直角旋转)
【youcans 的 OpenCV 例程200篇】29. 图像的翻转(cv2.flip)
【youcans 的 OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
【youcans 的 OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)
【youcans 的 OpenCV 例程200篇】32. 图像的扭变(错切)
【youcans 的 OpenCV 例程200篇】33. 图像的复合变换
【youcans 的 OpenCV 例程200篇】34. 图像的投影变换
【youcans 的 OpenCV 例程200篇】35. 图像的投影变换(边界填充)
【youcans 的 OpenCV 例程200篇】36. 直角坐标与极坐标的转换
【youcans 的 OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
【youcans 的 OpenCV 例程200篇】38. 图像的反色变换(图像反转)
【youcans 的 OpenCV 例程200篇】39. 图像灰度的线性变换
【youcans 的 OpenCV 例程200篇】40. 图像分段线性灰度变换
【youcans 的 OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层)
【youcans 的 OpenCV 例程200篇】42. 图像的灰度变换(比特平面分层)
【youcans 的 OpenCV 例程200篇】43. 图像的灰度变换(对数变换)
【youcans 的 OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
【youcans 的 OpenCV 例程200篇】45. 图像的灰度直方图
【youcans 的 OpenCV 例程200篇】46. 直方图均衡化
【youcans 的 OpenCV 例程200篇】47. 图像增强—直方图匹配
【youcans 的 OpenCV 例程200篇】48. 图像增强—彩色直方图匹配
【youcans 的 OpenCV 例程200篇】49. 图像增强—局部直方图处理
【youcans 的 OpenCV 例程200篇】50. 图像增强—直方图统计量图像增强
【youcans 的 OpenCV 例程200篇】51. 图像增强—直方图反向追踪
【youcans 的 OpenCV 例程200篇】52. 图像的相关与卷积运算
【youcans 的 OpenCV 例程200篇】53. Scipy 实现图像二维卷积
【youcans 的 OpenCV 例程200篇】54. OpenCV 实现图像二维卷积
【youcans 的 OpenCV 例程200篇】55. 可分离卷积核
【youcans 的 OpenCV 例程200篇】56. 低通盒式滤波器
【youcans 的 OpenCV 例程200篇】57. 低通高斯滤波器
【youcans 的 OpenCV 例程200篇】58. 非线性滤波—中值滤波
【youcans 的 OpenCV 例程200篇】59. 非线性滤波—双边滤波
【youcans 的 OpenCV 例程200篇】60. 非线性滤波—联合双边滤波
【youcans 的 OpenCV 例程200篇】61. 导向滤波(Guided filter)
【youcans 的 OpenCV 例程200篇】62. 图像锐化——钝化掩蔽
【youcans 的 OpenCV 例程200篇】63. 图像锐化——Laplacian 算子
【youcans 的 OpenCV 例程200篇】64. 图像锐化——Sobel 算子
【youcans 的 OpenCV 例程200篇】65. 图像锐化——Scharr 算子
【youcans 的 OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通
【youcans 的 OpenCV 例程200篇】67. 空间域图像增强的综合应用
【youcans 的 OpenCV 例程200篇】68. 空间域图像增强的综合应用
【youcans 的 OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数
【youcans 的 OpenCV 例程200篇】70. 一维连续函数的傅里叶变换
【youcans 的 OpenCV 例程200篇】71. 连续函数的取样
【youcans 的 OpenCV 例程200篇】72. 一维离散傅里叶变换
【youcans 的 OpenCV 例程200篇】73. 二维连续傅里叶变换
【youcans 的 OpenCV 例程200篇】74. 图像的抗混叠
【youcans 的 OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换
【youcans 的 OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换
【youcans 的 OpenCV 例程200篇】77. OpenCV 实现快速傅里叶变换
【youcans 的 OpenCV 例程200篇】78. 频率域图像滤波基础
【youcans 的 OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
【youcans 的 OpenCV 例程200篇】80. 频率域图像滤波详细步骤
【youcans 的 OpenCV 例程200篇】81. 频率域高斯低通滤波器
【youcans 的 OpenCV 例程200篇】82. 频率域巴特沃斯低通滤波器
【youcans 的 OpenCV 例程200篇】83. 频率域低通滤波:印刷文本字符修复
【youcans 的 OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器
【youcans 的 OpenCV 例程200篇】85. 频率域高通滤波器的应用
【youcans 的 OpenCV 例程200篇】86. 频率域滤波应用:指纹图像处理
【youcans 的 OpenCV 例程200篇】87. 频率域钝化掩蔽
【youcans 的 OpenCV 例程200篇】88. 频率域拉普拉斯高通滤波
【youcans 的 OpenCV 例程200篇】89. 带阻滤波器的传递函数
【youcans 的 OpenCV 例程200篇】90. 频率域陷波滤波器
【youcans 的 OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声
【youcans 的 OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声
【youcans 的 OpenCV 例程200篇】93. 噪声模型的直方图
【youcans 的 OpenCV 例程200篇】94. 算术平均滤波器
【youcans 的 OpenCV 例程200篇】95. 几何均值滤波器
【youcans 的 OpenCV 例程200篇】96. 谐波平均滤波器
【youcans 的 OpenCV 例程200篇】97. 反谐波平均滤波器
【youcans 的 OpenCV 例程200篇】98. 统计排序滤波器
【youcans 的 OpenCV 例程200篇】99. 修正阿尔法均值滤波器
【youcans 的 OpenCV 例程200篇】100. 自适应局部降噪滤波器
【youcans 的 OpenCV 例程200篇】101. 自适应中值滤波器
【youcans 的 OpenCV 例程200篇】102. 陷波带阻滤波器的传递函数
【youcans 的 OpenCV 例程200篇】103. 陷波带阻滤波器消除周期噪声干扰
【youcans 的 OpenCV 例程200篇】104. 运动模糊退化模型
【youcans 的 OpenCV 例程200篇】105. 湍流模糊退化模型
【youcans 的 OpenCV 例程200篇】106. 退化图像的逆滤波
【youcans 的 OpenCV 例程200篇】107. 退化图像的维纳滤波
【youcans 的 OpenCV 例程200篇】108. 约束最小二乘方滤波
【youcans 的 OpenCV 例程200篇】109. 几何均值滤波
【youcans 的 OpenCV 例程200篇】110. 投影和雷登变换
【youcans 的 OpenCV 例程200篇】111. 雷登变换反投影重建图像
【youcans 的 OpenCV 例程200篇】112. 滤波反投影重建图像
【youcans 的 OpenCV 例程200篇】113. 形态学操作之腐蚀
【youcans 的 OpenCV 例程200篇】114. 形态学操作之膨胀
【youcans 的 OpenCV 例程200篇】115. 形态学操作之开运算
【youcans 的 OpenCV 例程200篇】116. 形态学操作之闭运算
【youcans 的 OpenCV 例程200篇】117. 形态学操作之顶帽运算
【youcans 的 OpenCV 例程200篇】118. 形态学操作之底帽运算
【youcans 的 OpenCV 例程200篇】119. 图像的形态学梯度
【youcans 的 OpenCV 例程200篇】120. 击中-击不中变换
【youcans 的 OpenCV 例程200篇】121. 击中-击不中用于特征识别
【youcans 的 OpenCV 例程200篇】122. 形态算法之边界提取
【youcans 的 OpenCV 例程200篇】123. 形态算法之孔洞填充
【youcans 的 OpenCV 例程200篇】124. 孔洞填充的泛洪算法
【youcans 的 OpenCV 例程200篇】125. 形态算法之提取连通分量
【youcans 的 OpenCV 例程200篇】126. 形态算法之凸壳
【youcans 的 OpenCV 例程200篇】127. 形态算法之细化
【youcans 的 OpenCV 例程200篇】128. 形态算法之骨架 (skimage)
【youcans 的 OpenCV 例程200篇】129. 形态算法之骨架 (重建开运算)
【youcans 的 OpenCV 例程200篇】130. 形态学之提取水平和垂直线
【youcans 的 OpenCV 例程200篇】131. 形态学重建之竖线字符提取
【youcans 的 OpenCV 例程200篇】132. 形态学重建之孔洞填充算法

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

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

相关文章

c 包含其他文件_C语言:全局变量在多个c文件中公用的方法!

用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。举例说明:项目文件夹project下有main.c、common.c和common.h三…

【youcans 的 OpenCV 例程200篇】133. 形态学重建之边界清除

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程200篇】133. 形态学重建之边界清除 4. 形态学图像重建 形态学重建的核心是测地膨胀和测地腐蚀。 图像的…

跟着川川学数模-Day2

目录 一、前言 二、问题提出 三、问题求解 3.1 线性规划(忽视整数条件) 3.2 整数线性规划 3.2.1 对x1进行分枝求解 3.2.2 在x范围下对x2进行分支求解 3.2.3 求解最大值 3.2.4 结果 一、前言 在川川前面两篇的推送中,学习到了如何求解…

鼠标吸附彩色气泡

H5Cavas制作鼠标吸附彩色气泡。当鼠标在屏幕上移动的时候&#xff0c;鼠标划过的区域会出现许多彩色气泡&#xff0c;并且会自动消失。 效果演示 看了如此效果是不是心动的感觉呢&#xff1f;&#xff1f;&#xff1f; 代码展示 <!DOCTYPE html> <html><hea…

【youcans 的 OpenCV 例程200篇】135. 形态学重建之粒度测定

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】135. 形态学重建之粒度测定 4. 形态学图像重建 形态学重建的核心是测地膨胀和测地腐蚀。 图像的…

跟着川川学数模-Day3

目录 一、非线性引入 二、非线性规划模型 三、Matlab中的非线性规划函数 四、求解不等式和等式双变量约束 五、非线性约束求最小值 5.1 奇奇怪怪的三变量 5.2 可可爱爱的范围寻优 六、总结 一、非线性引入 前面两天跟着川川学习了线性规划和整数线性规划&#xff0c;今…

java - 求最大公约数和最小公倍数

根据提示输入两个正整数 m 和 n&#xff0c;求其最大公约数和最小公倍数 并进行控制台输出。 原理分析 在循环中&#xff0c;只要除数不等于 0&#xff0c;用较大数除以较小的数&#xff0c;将小的一个数作为下一轮循环的大数&#xff0c;取得的余数作为下一轮循环的较小的数&…

【youcans 的 OpenCV 例程200篇】134. 形态学重建之细胞计数

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】134. 形态学重建之细胞计数 4. 形态学图像重建 形态学重建的核心是测地膨胀和测地腐蚀。 图像的…

【youcans 的 OpenCV 例程200篇】136. 灰度腐蚀和灰度膨胀

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】136. 灰度腐蚀和灰度膨胀 5. 灰度级形态学 灰度级形态学将形态学操作从二值图像扩展到灰度图像。…

基于主成分分析法的安全评价模型

目录 一、安全评价简介 二、引入 三、调查问卷的设置 四、问卷发放与回收 五、主成分分析法介绍 六、SPSS主成分分析&#xff08;简易版&#xff09; 6.1 数据的导入与设定 6.2 信效度分析 6.3 SPSS主成分分析处理 一、安全评价简介 何为安全评价&#xff0c;对于本专业…

java - 分解质因数

根据提示输入一个正整数&#xff0c;用java程序进行分解质因数。例如&#xff1a;输入 90,打印出 90233*5 原理分析&#xff1a; 1.对 n 进行分解质因数&#xff0c;应先找到一个最小的质数 k&#xff0c;然后按下述步骤完成&#xff1a; 2.如果这个质数恰等于 n&#xff0c;则…

【youcans 的 OpenCV 例程200篇】137. 灰度开运算和灰度闭运算原理

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】137. 灰度开运算和灰度闭运算 5. 灰度级形态学 灰度级形态学将形态学操作从二值图像扩展到灰度图…

跟着川川学数模-Day4

目录 一、一元线性回归 二、多元线性回归 一、一元线性回归 今天是跟着川川学数模的第四天&#xff0c;也与前些天的规划问题不同&#xff0c;进入到了线性回归&#xff0c;那么我们先来看一下一元线性回归问题. 我们以某一数据列为例&#xff0c;代码如下 x1:12; y[217.22…

Java - 计算不同字符或数字的个数

根据提示输入一行字符&#xff0c;这行字符可以是任意的&#xff0c;可以包含字母数字标点符号&#xff0c;特殊符号等&#xff0c;java程序会输出你输入字符串中各个类别字符的个数。 结果展示 代码展示 package com.one;import java.util.*;public class Flqgs {public st…

oracle去重保留一条_关于oracle数据库物理结构(文件)的一些总结

概述闲来无事&#xff0c;整理了下oracle数据库物理结构方面的内容&#xff0c;这里主要从数据库文件和操作系统文件两个方面来介绍。任何时候都要记得&#xff0c;数据库是数据存储的容器&#xff0c;作用是用来收集、存储数据和返回信息。物理结构数据库文件1&#xff0e;控制…

【youcans 的 OpenCV 例程200篇】138. 灰度开运算和灰度闭运算

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】138. 灰度开运算和灰度闭运算 5.2 灰度开运算和灰度闭运算 OpenCV 提供了函数 cv.morphologyEx 可…

跟着川川学数模-Day5

一、一些废话 哦莫&#xff0c;终于到了我最喜欢且不会的东西了&#xff0c;动态规划&#xff0c;求解最优路径&#xff0c;学会这玩意就能处理简单的TSP问题了&#xff0c;那么让我们来看看怎么用Matlab实现。 二、最短路径求解 2.1 稀疏矩阵 哦莫&#xff0c;果然上来就是…

c#获取对象的唯一标识_DDD领域驱动设计实战 - 创建实体身份标识的常用策略

从简单到复杂依次为&#xff1a;3.1.1 用户提供唯一标识这时用户将输入一些可识别的数值或符号&#xff0c;或从已有标识中选其一&#xff0c;然后创建实体对象。这是一种非常简单方案&#xff0c;但也可能变得复杂。由于需用户自己生成高质量的标识。所以标识可能唯一&#xf…

java - 计算距离和反弹

根据提示输入次数&#xff0c;控制台输出对应的距离和反弹的距离。 效果演示 代码展示 package com.one;import java.util.*; public class High {public static Scanner input new Scanner(System.in);public static void main(String[] args) {System.out.println("…

【youcans 的 OpenCV 例程200篇】139. 灰度顶帽变换校正阴影

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】139. 灰度顶帽变换校正阴影 灰度级形态学将形态学操作从二值图像扩展到灰度图像。灰度形态学处理也…