opencvhsv阈值分割函数,python中opencv

  opencvhsv阈值分割函数,python中opencv

  阈值分割法是一种基于区域的图像分割技术,原理是把图像像素点分为若干类。本文将利用Python OpenCV实现阈值分割,感兴趣的可以了解一下

  

目录

一、全局阈值1.效果图2.源码二、滑动改变阈值(滑动条)1.效果图2.源码三、自适应阈值分割1.效果图2.源码3.高斯布朗勒函数去噪四、参数解释

 

  

一、全局阈值

 

  原图:

  整幅图采用一个阈值,与图片的每一个像素灰度进行比较,重新赋值;

  

1.效果图

 

  

2.源码

 

  导入cv2

  将matplotlib.pyplot作为血小板计数导入

  #设定阈值

  阈值=130

  #载入原图,并转化为灰度图像

  img _原始=cv2。im read(r e : py python 3.7 test 2 test 14于之 cell。png ,0)

  img _原始=cv2。resize(img _ original,(0,0),fx=0.3,fy=0.3)

  #采用5种阈值类型(阈值类型)分割图像

  retval1,img _ binary=cv2。threshold(img _ original,thresh,255,cv2 .THRESH_BINARY)

  retval2,img _ binary _ invertion=cv2。threshold(img _ original,thresh,255,cv2 .THRESH_BINARY_INV)

  retval3,img _ trunc=cv2。threshold(img _ original,thresh,255,cv2 .TRUNC)

  retval4,img _ to zero=cv2。threshold(img _ original,thresh,255,cv2 .THRESH_TOZERO)

  retval5,img _ to zero _ inversion=cv2。threshold(img _ original,thresh,255,cv2 .THRESH_TOZERO_INV)

  #采用plt.imshow()显示图像

  imgs=[img_original,img_binary,img _ binary _ invertion,img_trunc,img_tozero,img_tozero_inversion]

  titles=[original , binary , binary_inv , trunc , tozero , tozero_inv]

  对于范围(6):中的我

  情节子情节(2,3,11)

   plt.imshow(imgs[i],灰色)

  工厂名称(标题[我])

  plt.xticks([])

  plt.yticks([])

  plt.show()

  

二、滑动改变阈值(滑动条)

 

  

1.效果图

 

  

2.源码

 

  代码如下(示例):

  导入cv2

  将数组作为铭牌导入

  将matplotlib.pyplot作为血小板计数导入

  #载入原图,转化为灰度图像,并通过cv2.resize()等比调整图像大小

  img _原始=cv2。im read(r e : py python 3.7 test 2 test 14于之 cell。png ,0)

  img _原始=cv2。resize(img _ original,(0,0),fx=0.3,fy=0.3)

  #初始化阈值,定义全局变量毕业生

  人工全髋关节置换术

  esh=130

  imgs=0

  #创建滑动条回调函数,参数thresh为滑动条对应位置的数值

  def threshold_segmentation(thresh):

   #采用5种阈值类型(thresholding type)分割图像

   retval1,img_binary=cv2.threshold(img_original,thresh,255,cv2.THRESH_BINARY)

   retval2,img_binary_invertion=cv2.threshold(img_original,thresh,255,cv2.THRESH_BINARY_INV)

   retval3,img_trunc=cv2.threshold(img_original,thresh,255,cv2.THRESH_TRUNC)

   retval4,img_tozero=cv2.threshold(img_original,thresh,255,cv2.THRESH_TOZERO)

   retval5,img_tozero_inversion=cv2.threshold(img_original,thresh,255,cv2.THRESH_TOZERO_INV)

   #由于cv2.imshow()显示的是多维数组(ndarray),因此我们通过np.hstack(数组水平拼接)

   #和np.vstack(竖直拼接)拼接数组,达到同时显示多幅图的目的

   img1=np.hstack([img_original,img_binary,img_binary_invertion])

   img2=np.hstack([img_trunc,img_tozero,img_tozero_inversion])

   global imgs

   imgs=np.vstack([img1,img2])

  #新建窗口

  cv2.namedWindow(Images)

  #新建滑动条,初始位置为130

  cv2.createTrackbar(threshold value,Images,130,255,threshold_segmentation)

  #第一次调用函数

  threshold_segmentation(thresh)

  #显示图像

  while(1):

   cv2.imshow(Images,imgs)

   if cv2.waitKey(1)==ord(q):

   break

  cv2.destroyAllWindows()

  

  

 

  

三、自适应阈值分割

 

  

1.效果图

 

  

 

  

2.源码

 

  代码如下(示例):

  

import cv2

 

  

 

  

3.GaussianBlur()函数去噪

 

  

 

  代码如下(示例):

  

import cv2

 

  

 

  

四、参数解释

 

  1.cv2.threshold(src, thresh, maxval, type)

  参数:

  src:输入的图像

  thresh:图像分割所用的阈值(threshold value)

  maxval:当阈值类型(thresholding type)采用cv2.THRESH_BINARY和cv2.THRESH_BINARY_INV时像素点被赋予的新值

  type:介绍6种类型:

  cv2.THRESH_BINARY(当图像某点像素值大于thresh(阈值)时赋予maxval,反之为0。注:最常用)

  cv2.THRESH_BINARY_INV(当图像某点像素值小于thresh时赋予maxval,反之为0)

  cv2.THRESH_TRUNC(当图像某点像素值大于thresh时赋予thresh,反之不变。注:虽然maxval没用了,但是调用函数不能省略)

  cv2.THRESH_TOZERO(当图像某点像素值小于thresh时赋予0,反之不变。注:同上)

  cv2.THRESH_TOZERO_INV(当图像某点像素值大于thresh时赋予0,反之不变。注:同上)

  cv2.THRESH_OTSU(该方法自动寻找最优阈值,并返回给retval,见下文)

  返回值:

  retval:设定的thresh值,或者是通过cv2.THRESH_OTSU算出的最优阈值

  dst:阈值分割后的图像

  以上就是Python+OpenCV实现阈值分割的方法详解的详细内容,更多关于Python OpenCV阈值分割的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: