python之阈值分割

阈值分割法是一种基于区域的图像分割技术,原理是把图像像素点分为若干类。图像阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。它特别适用于目标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域不具有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。

import numpy as np
import cv2
img=cv2.imread('C:\\Users\\yh\\Pictures\\1.png')
imginfo=img.shape
size=(imginfo[1],imginfo[0])
imgdst=img[100:500,100:500]
print(size)

gray = cv2.cvtColor(imgdst, cv2.COLOR_BGR2GRAY)
#超过阈值thresh,值为255,未超过为0。
ret1, p1 = cv2.threshold(src=gray, thresh=127, maxval=255, type=cv2.THRESH_BINARY)

contours, hierarchy = cv2.findContours(p1, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
n=len(contours)
cv_contours=[]
for contour in contours:
    area=cv2.contourArea(contour)
    if area>1000:
        cv_contours.append(contour)
cv2.drawContours(imgdst, cv_contours, -1, (0,255,0), 3)
k = np.ones((3, 3), np.uint8)  
temp = cv2.erode(p1, k) 
p2= cv2.dilate(temp, k)
 
cv2.imshow('imgdst', imgdst)
cv2.imshow('p1', p1)
cv2.imshow('p2', p2)
cv2.waitKey(0)
cv2.destroyAllWindows()

python之阈值分割_第1张图片

你可能感兴趣的:(python,opencv,计算机视觉)