当前位置: 首页 > news >正文

Opencv[七]——补充

直方图均衡化

1.绘制直方图

hist = cv2.calcHist(images,channels,mask,histSize,ranges)

  • images:输入图像列表,可以是一幅或多幅图像(通常是灰度图像或者彩色图像的各个通道)。

  • channels:一个包含整数的列表,指示在每个图像上计算直方图的通道编号。如果输入图像是灰度图,它的值就是 [0];如果是彩色图像的话,传入的参数可以是 [0],[1],[2] 它们分别对应着通道 B,G,R。

  • mask(可选):一个与输入图像尺寸相同的二值掩模图像,其中非零元素标记了参与直方图计算的区域,None为全部计算。

  • histSize:一个整数列表,也就是直方图的区间个数(BIN 的数目)。用中括号括起来,例如:[256]。

  • ranges:每维数据的取值范围,它是一个二维列表,每一维对应一个通道的最小值和最大值,例如对灰度图像可能是 [0, 256]

返回值hist 是一个长度为255的数组,数组中的每个值表示图像中对应灰度等级的像素计数

minVal,maxVal,minLoc,maxLoc = cv2.minMaxLoc(hist)

获取直方图的最小值、最大值及其对应最小值的位置索引、最大值的位置索引

cv2.line(img,pt1,pt2,color,thickness)

2.直方图均衡化

一副效果好的图像通常在直方图上的分布比较均匀,直方图均衡化就是用来改善图像的全局亮度和对比度。

自适应直方图均值化:以255*占比

dst = cv.equalizeHist(imgGray)

对比度受限的自适应直方图均衡化:

<u>clahe = cv2.createCLAHE(clipLimit=None,tileFridSize=None)</u>

  • clipLimit(可选):对比度限制参数,用于控制直方图均衡化过程中对比度增强的程度。如果设置一个大于1的值(如2.0或4.0),CLAHE会限制对比度增强的最大程度,避免过度放大噪声。如果不设置,OpenCV会使用一个默认值。

  • tileGridSize(可选):图像分块的大小,通常是一个包含两个整数的元组,如(8, 8),表示将图像划分成8x8的小块进行独立的直方图均衡化处理。分块大小的选择会影响到CLAHE的效果以及处理速度。

创建CLAHE对象后,可以使用 .apply() 方法对图像进行CLAHE处理:

img = clahe.apply(image)

模板匹配

res = cv2.matchTemplate(img,templ,method)

method:匹配方法,可以是以下之一:

越大越好:

  • cv2.TM_CCOEFF 相关系数匹配 (均值与像素之差的乘积求和)

  • cv2.TM_CCOEFF_NORMED 归一化相关系数匹配

  • cv2.TM_CCORR 相关匹配 (乘积)

  • cv2.TM_CCORR_NORMED 归一化相关匹配

    越接近0越好:

  • cv2.TM_SQDIFF 平方差匹配

  • cv2.TM_SQDIFF_NORMED 归一化平方差匹配

由于matchTemplate返回是一个结果矩阵,与原图大小相同,每个元素表示匹配的相似度。

所以利用res进行绘图要先解包

绘制轮廓

loc = np.where(arr>0.8) # loc包含array中所有大于0.8的**元素索引**的数组

for pt in zip(*loc):right_bottom = (pt[1] + w, pt[0] + h)cv2.rectangle(image_np, pt[::-1], right_bottom, (0, 0, 255), 2)

霍夫变换

霍夫直线变换

lines = cv2.HoughLines(img,roh,theat,threshold)

统计概率霍夫直线变换

lines=cv2.HoughLinesP(img,rho,theta,threshold,lines=None,minLineLength=0,maxLineGap=0)

霍夫圆变换

circle = cv2.HoughCircles(img,method,dp,minDist,param1,param2)


  • image:输入图像,通常是灰度图像。

  • method:使用的霍夫变换方法:霍夫梯度法,可以是 cv2.HOUGH_GRADIENT,这是唯一在OpenCV中用于圆检测的方法。

  • dp:累加器分辨率与输入图像分辨率之间的降采样比率,用于加速运算但不影响准确性。设置为1表示霍夫梯度法中累加器图像的分辨率与原图一致

  • minDist:检测到的圆心之间的最小允许距离,以像素为单位。在霍夫变换检测圆的过程中,可能会检测到许多潜在的圆心。minDist 参数就是为了过滤掉过于接近的圆检测结果,避免检测结果过于密集。当你设置一个较小的 minDist 值时,算法会尝试找出尽可能多的圆,即使是彼此靠得很近的圆也可能都被检测出来。相反,当你设置一个较大的 minDist 值时,算法会倾向于只检测那些彼此间存在一定距离的独立的圆。

    例如,如果你设置 minDist 很小,可能在真实图像中存在的一个大圆旁边的一些噪声点会被误判为多个小圆;而如果设置 minDist 较大,则可以排除这种情况,只保留明显分离的圆的检测结果。

  • param1param2:这两个参数是在使用 cv2.HOUGH_GRADIENT 方法时的特定参数,分别为:

    • param1(可选):阈值1,决定边缘强度的阈值。

    • param2:阈值2,控制圆心识别的精确度。较大的该值会使得检测更严格的圆。param2 通常被称为圆心累积概率的阈值。在使用霍夫梯度方法时,param2 设置的是累加器阈值,它决定了哪些候选圆点集合被认为是有效的圆。较高的 param2 值意味着对圆的检测更严格,只有在累加器中积累了足够高的响应值才认为是真实的圆;较低的 param2 值则会降低检测的门槛,可能会检测到更多潜在的圆,但也可能包含更多的误检结果。

      举个例子,如果你将 param2 设置得较高,那么算法只会返回那些边缘强烈符合圆形特征且周围有足够的支持像素的圆;而如果设置得较低,即使边缘特征不是很强烈,只要有一些证据支持就可能将其视为一个圆。

返回值:cv2.HoughCircles 返回一个二维numpy数组,包含了所有满足条件的圆的参数。

图片亮度变换

1.线性变换

cv2.addWeighted(src1, alpha, src2, beta, gamma)

2.直接像素修改

numpy.clip(a, a_min, a_max)

http://www.dtcms.com/a/322391.html

相关文章:

  • 基于HTML的政策问答
  • java组件安全vulhub靶场
  • HTML金色流星雨
  • 服务器硬件电路设计之I2C问答(二):I2C总线的传输速率与上拉电阻有什么关系?
  • ELK常见的问题
  • 华为实验:DHCP 典型配置
  • 《汇编语言:基于X86处理器》第12章 复习题和练习
  • Openlayers基础教程|从前端框架到GIS开发系列课程(19)地图控件和矢量图形绘制
  • Elasticsearch `_search` API Query DSL、性能开关与实战范式
  • 如何优雅的使用进行参数校验
  • Nginx 功能扩展与二次开发实践
  • 黑马SpringAI项目-聊天机器人
  • axios 发请求
  • 束搜索(Beam Search):原理、演进与挑战
  • ubuntu 端口占用 但是找不到进程 与docker 容器镜像相关
  • 【网络与爬虫 52】Scrapyd-k8s集群化爬虫部署:Kubernetes原生分布式爬虫管理平台实战指南
  • 【新启航】飞机起落架外筒深孔型腔的测量方法 - 激光频率梳 3D 轮廓检测
  • 基于遗传优化的智能灌溉系统控制策略matlab仿真
  • python学智能算法(三十六)|SVM-拉格朗日函数求解(中)-软边界
  • docker的开源跨平台替代Vagrant
  • Zread:把 GitHub 仓库“一键变说明书”的体验与实战指南
  • 【超强总结】图像分割模型训练核心:优化器选型与学习率调控策略
  • 【数据结构初阶】--文件归并排序
  • 前端懒加载技术全面解析
  • Spring学习笔记:Spring AOP入门以及基于Spring AOP配置的深入学习与使用
  • Vue3的简单学习
  • docker基础前置
  • day18 - CSS函数
  • ADB(Android Debug Bridge)—— Android调试桥
  • Android MediaMetadataRetriever取视频封面,Kotlin(1)