数字图像处理(简单的图像分割)

继续学习中......

设定阈值分割

均值分割

高斯分割

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
img=cv.imread("./girl.jpg",0)
#设定阈值分割
ret,th1 = cv.threshold(img,50,255,cv.THRESH_BINARY)      #min50,max255
#均值分割
th2 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_MEAN_C,
            cv.THRESH_BINARY,11,2)
#高斯分割
th3 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,
            cv.THRESH_BINARY,11,2)
titles = ['yuantu', 'Global Thresholding (v = 50)',
            'Mean', 'Gaussian']
images = [img, th1, th2, th3]
for i in range(4):
    plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

数字图像处理(简单的图像分割)_第1张图片

 可以看出均值和高斯分割的处理比较好,而且高斯分割对细节的敏感度也高一些。

接下来说说常用的Canny边缘分割

#Canny边缘分割
import numpy as np
import cv2 as cv
img=cv.imread("./girl.jpg",0)
a=cv.Canny(img,100,200)              #第一阈值100,第二阈值200
cv.imshow("img",np.hstack((img,a)))
cv.waitKey()
cv.destroyAllWindows()

数字图像处理(简单的图像分割)_第2张图片

 可以看出Canny边缘分割把前景更能刻画出来,对噪声的敏感度也更高一些。

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